最初にレンダリングを見てみましょう:
コードをアップロードするだけです。
ボタンを微調整し、キャンバスを追加していくつかの円を描き、監視します。 。 。
パッケージcn.hncu.threaddemo.thread2; Import java.awt.canvas; Import java.awt.color; Import java.awt.graphics; Import java.awt.event.actionevent; Import java.awt.event.actionlistener; Import.hava.awt.event.event.event.fecusevent java.awt.event.focuslistener; Import javax.swing.jframe; Import javax.swing.jlabel; Import javax.swing.jpanel; Import javax.swing.jspinner;インポートjavax.swing.timer; ballsjFrameはJFrameを拡張し、ChangElistener {private ballscanvas ball;プライベートJspinnerスピナー。 public ballsjframe(){super( "pineball"); this.setbounds(300、200、400、300); this.setDefaultCloseoperation(exit_on_close);色の色[] = {color.red、color.green、color.blue、color.magenta、color.cyan}; Ball =新しいBallScanvas(Colors、100); this.getContentPane()。add(ball); //デフォルトは中心位置jpanelパネル= new jPanel(); this.getContentPane()。追加(パネル、 "サウス"); panel.add(new Jlabel( "Delay")); spinner = new jspinner(); Spinner.setValue(100); panel.add(スピナー); spinner.addchangelistener(this); this.setVisible(true); } @Override public void stateChanged(changeEvent e){int value = integer.parseint( ""+spinner.getValue()); ball.setdelay(value); } public static void main(string [] args){new ballsjframe(); }} class ballscanvas拡張キャンバスを実装しますactionlistener、focuslistener {プライベートボールボール[]; //すべてのボールプライベートタイマータイマー; // javax.swing.timer public ballscanvas(color colors []、int delay){this.balls = new ball [colors.length]; for(int i = 0、x = 40; i <colors.length; i ++、x+= 20){this.balls [i] = new ball(x、x、colors [i]); } //現在のキャンバスにフォーカスイベントを監視させますthis.addfocuslistener(this);タイマー=新しいタイマー(遅延、これ); Timer.start(); } public void setdelay(int delay){timer.setdelay(delay); } @Override public void paint(graphics g){for(int i = 0; i <this.balls.length; i ++){g.setcolor(balls [i] .color); //各ボールの座標---(x座標)ボール[i] .x = balls [i] .Left?ボール[i] .x-10:ボール[i] .x+10; //ボールが壁にぶつかったら、ボールの方向を変更する場合は(ボール[i] .x <= 0 ||ボール[i] .x> = this.getWidth()-24){balls [i] .left =!balls [i] .left; // switch方向} //各ボールの座標----(y座標)[i]。ボール[i] .y-10:ボール[i] .y+10; //ボールが壁にぶつかったら、ボールの方向を変更するif(balls [i] .y <= 0 || balls [i] .y> = this.getheight() - 22){balls [i] .up =!balls [i] .up; // switch方向} g.filloval(balls [i] .x、20、20); }} @Override public void ActionPerformed(ActionEvent e){//system.out.println("aaa "); repaint(); //キャンバスを更新します。 call paint(graphics g)} @override public void focusgained(focusevent e){timer.stop(); } @Override public void focusLost(focusevent e){timer.restart(); }プライベート静的クラスボール{int x、y;ブールアップ、左;色の色;パブリックボール(int x、int y、color){this.x = x; this.y = y; this.color = color; up = left = false; }}}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。