我有JFrame
,并且我用paintComponent()
方法添加了我的JPanel
类。例如,我绘制了红色的矩形,并且在做了一些动作之后,我想绘制出绿色的椭圆形。我试图在JPanel
中拨打repaint()
方法,但没有任何反应。请帮帮我!JPanel重绘问题
UPDATE:这只是示例代码
public class Test extends JFrame implements ActionListener{
private Container content;
private MyPanel em;
private JButton btn;
Test() {
super("test");
content = getContentPane();
em = new MyPanel();
conent.add(em);
btn = new JButton("Draw");
btn.addActionListener(this);
content.add(btn);
}
public void actionPerformed(ActionEvent e) {
em.setShape("oval");
}
public class MyPanel extends JPanel {
private String shape = "rectangle";
MyPanel()
{
}
setShape(String shape){
this.shape = shape;
repaint();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
if(shape == "rectanle")
g.drawRectangle(100,25,100,200);
}
else if(shape == "oval"){
g.drawOval(100, 25, 175, 175);
}
}
您的问题中没有足够的信息开始回答。您需要发布代码(尽可能少的代码来重现问题),以及您期望看到什么行为,实际看到的内容以及您认为问题可能存在的细节。 – 2010-11-05 19:55:46
您是否使用-DPleaseRepaintMyPanelPromptly标志运行程序? – 2010-11-05 19:57:24
这是一个笑话顺便说一句。 – 2010-11-05 19:58:21