我想知道您应该如何为同一类中的每个面板覆盖paint方法,以及如何分别调用它们?

我只在扩展JPanel的类中(仅在一个面板中)知道repaint()调用,而不是在仅创建面板时知道。

提前致谢。

最佳答案

通常,您创建一个扩展JPanel的类以覆盖paintComponent方法:

public class Test extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        // code here
    }

    public void doStuff() { repaint(); }
}


您可以考虑像这样创建一个嵌套类:

public class Test {
    public class MyPanel extends JPanel {
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            // code here
        }
    }
    JPanel panel = new MyPanel();
    panel.repaint();
}


或者,您可以执行以下操作而无需创建扩展JPanel的类:

JPanel panel1 = new JPanel() {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        // code here
    }
};

panel1.repaint();

关于java - 同一类中具有多个面板的重绘方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27536818/

10-13 04:26