首页 文章

按下按钮时更新JPanel中的图形

提问于
浏览
0

我的主类扩展了JFrame并且有一个包含图形组件的JPanel,之前我有以下代码:

public class StartGUI extends JFrame implements ActionListener {

    public StartGUI {

    graphArea = new JPanel() {
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            drawNetwork(myNetwork, this, g);
                }
};

            add(graphArea);
        }

但是现在我想改变图形区域,只有在我按下JButton之后才能显示,我如何在actionPerformed方法中移动这个JPanel来更新drawNetwork?

public void actionPerformed(ActionEvent e) {
    if(e.getSource() == readButton) {
        graphArea = new JPanel() {
            public void paintComponent(Graphics g) {
                super.paintComponent(g);
                drawNetwork(myNetwork, this, g);

            }
        };
    }

以上似乎不起作用,我该如何解决这个问题?

2 回答

  • 2

    正如我从你的评论中理解的那样,你需要将模型(myNetwork)和视图(graphArea)分开 .

    创建并添加graphArea但是

    public void paintComponent(Graphics g) {
                super.paintComponent(g);
                if (myNetwork!=null) {
                    drawNetwork(myNetwork, this, g);
                }
            }
    

    初始网络为空(或者可能是一些isInitialized()检查) . 选择文件并创建网络后,只需调用graphArea .repaint()以反映模型更改 .

  • 0

    您创建新的graphArea JPanel,但不要将其添加到任何容器 . 在您的旧代码中,您有一个新代码中缺少的调用 add(graphArea); .

相关问题