使用同一类中的多个面板重绘方法

时间:2014-12-17 23:37:37

标签: java swing paint repaint panels

我想知道你应该如何覆盖同一类中每个面板的绘制方法以及如何单独调用它们?

当你在一个扩展JPanel的类(只在一个面板中)时,我只知道repaint()调用,而不是在你只是制作面板时。

提前致谢。

2 个答案:

答案 0 :(得分:1)

通常,您创建一个扩展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();

答案 1 :(得分:0)

我认为正常情况是为您想要创建的每个唯一面板扩展JPanel。换句话说,您创建的每个面板都是自己的类。然后你可以单独覆盖每个的paint方法。