2017-01-20 10 views
-5
/*If given constructor values draw moving circle 
* But if it does not give him the values ​​draws a line 
*/ 
package samr; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import java.awt.Graphics; 
public class AX{ 
    public static class panel extends JPanel{ 
     public int w,c=1; 
     public panel(int start,int end){ 
      int x=start; 
      int y=end; 
      w=x; 
      paint(?,x,y); 
     } 
     public panel(){ 
      paint(?); 
     } 
     public void paint(Graphics e){ 
      e.drawLine(0,0,500,500); 
     } 
     public void paint(Graphics g,int x,int y){ 
        super.paint(g); 
        if(w<=y){ 
         w=w+c; 
         if(w==x||w==y){c=c*-1;} 
         g.drawOval(w,0,50,50); 
         this.repaint(); 
        } 
     } 
    } 
    public static void main(String[] arg){ 
     JFrame f=new JFrame("test"); 
      f.setBounds(100,100,500,500); 
     panel p=new panel(100,300); 
      f.add(p); 
      f.setVisible(true); 
    } 
} 

私は代わりにコンストラクタのグラフィックを与えますか?Javaプログラム|私は代わりにコンストラクタのグラフィックスを与えますか?

答えて

1

スイングで絵画がどのように機能するかについては、Painting in AWT and SwingPerforming Custom Paintingを参照してください。

コンポーネントを更新する場合は、その後、あなたはSwingでrepaint

絵画を呼び出す必要がありますが、パフォーマンスを向上させるために、受動的なアルゴリズムを介して行われ、あなたは状態を変更していないか、状態を変更する可能性のある機能を呼び出すん任意のペイント方法の中からUIの番号を削除する必要がありますので、paintメソッドでrepaintコールを削除する必要があります。

慣習上、の代わりにpaintを使用することをお勧めします。これは安全です。

ペイントでコンポーネントの現在の状態をペイントする必要があります。これは、いくつかの変数を目的の値に設定し、それらを更新するためにrepaintを呼び出す必要があることを意味します。

関連する問題