繁体   English   中英

如何重画/再次调用paintComponent?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM