私は JFrame/JPanelsrepaint();
などをいじろうとしていますが、スレッドを開始し、run while true を介して repaint を呼び出すと、System.out.println("as");
ループが実行されているかどうかを確認するために配置した行だけが吐き出されます。
質問は次のとおりです。ループで再描画を呼び出すと、図面が消えるのはなぜですか? (/のJFrame
付いたのみが表示されているようで、パネルなどはありません。)canvas_width
height
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(CANVAS_WIDTH, CANVAS_HEIGHT);
frame.setPreferredSize(new Dimension(CANVAS_WIDTH, CANVAS_HEIGHT));
frame.setVisible(true);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p = new JPanel(new GridLayout());
frame.getContentPane().add(p);
Something s = new Something();
p.add(s);
p.setBackground(Color.black);
frame.pack();
}
そして何かクラス:
public class Something extends JPanel implements Runnable {
public Something(){
Thread t = new Thread();
t.start();
run();
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.cyan);
g.fillRect(0, 0, getWidth()-150, getHeight()-100);
g.setColor(Color.BLACK);
g.fillOval(10, 10, 25, 25);
}
@Override
public void run() {
while(true){
repaint();
System.out.println("as");
try {
Thread.sleep(1);
} catch (InterruptedException e){}
}
}
}
contentpane
これが正しく行われたかどうか確信が持てないため、に関するヘルプをいただければ幸いです。