我有这个代码,但JPanel
重绘方法不起作用。如果我将它添加到JFrame类后,我会调试它,它不记得paintComponent
。添加自定义JPanel到JFrame后重绘方法
这是为什么?
package trial;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
class jp extends JPanel
{
int i=0;
{
setBackground(Color.RED);
}
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
Color[] c={Color.red,Color.green};
//To change body of generated methods, choose Tools | Templates.
g.drawLine(i, i, i+100, i+100);
i+=50;
}
}
public class Trial extends JFrame{
public static void main(String[] args) {
Trial f=new Trial();
jp a;
a=new jp();
System.out.println(a.i);
f.add(a);
f.setVisible(true);
f.setSize(500, 500);
f.setDefaultCloseOperation(3);
a.repaint();
}
}
为什么你有两个{{在保护void paintComponent(Graphics g){{...}} – user2277872 2013-05-06 16:43:39
为代码块使用一致的逻辑缩进。代码的缩进旨在帮助人们理解程序流程。 – 2013-05-06 16:49:27
我刚刚在我的机器上测试了它,在'paintComponent(Graphics g)'方法中设置了一个调试点,并且程序按照预期进入了调试模式。 – lwi 2013-05-06 17:04:47