[英]How to repaint/call again paintComponent?
所以我有这段代码:
public class myPanel extends JPanel implements ActionListener{
int x = 0;
JButton myButton = new JButton("Click me");
public myPanel(){
super().setLayout(null);
myButton.setBounds(50,50,50,50);
super().add(myButton);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
if(x==1)
g.drawString("hi",10,10);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==myButton){
x=1;
//Do something here
}
}
}
如何再次调用paintComponent? 假设当我按下按钮时,它在检查整数x是否等于1后再次调用paintComponent并绘制字符串“ Hi”。 先感谢您!!! 这里对Java还是很新的,所以你们能像对10岁的孩子一样解释一下吗?
调用repaint()
,它将再次绘制它。
您应该在任何状态更改(应更改GUI的视图repaint()
后调用repaint()
。 例如,如果按钮更改了变量,并且如果该变量应反映在视图的更改中,则在按钮的ActionListener中调用repaint()
。 如果鼠标拖动更改了ImageIcon子画面的视图,则可以在MouseMotionListener的mouseDragged方法中调用重绘。 如果Swing计时器驱动了动画,则可以从Swing计时器的ActionListener中调用repaint()
。
您永远不想做的一件事是从paint(Graphics g)
或paintComponent(Graphics g)
方法中调用repaint()
,因为这将导致完全无法控制的循环。
附带说明一下,通常,您将要避免使用null布局和setBounds,因为这会导致非常不灵活的GUI,尽管它们在一个平台上看起来可能不错,但在大多数其他平台或屏幕分辨率上看起来却很糟糕,并且很难更新和更新。保持。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.