【发布时间】:2013-05-07 04:42:37
【问题描述】:
我有这个代码,但是JPanel repaint 方法不起作用。如果我在将它添加到 JFrame 类之后执行此操作,我会对其进行调试,但它不记得 paintComponent。
为什么会这样?
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) {{ ... }} 中有两个 {{
-
对代码块使用一致且符合逻辑的缩进。代码的缩进是为了帮助人们理解程序流程。
-
我刚刚在我的机器上测试了它,在
paintComponent(Graphics g)方法中设置了一个调试点,程序按预期进入了调试模式。 -
它进入了它,但不是通过方法“repaint”我的笔记是关于方法 repaint 为什么它没有任何意义
标签: java swing user-interface jpanel