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



我的主类扩展了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 后显示,我将如何移动此 JPanel 以在 actionPerforming 方法中更新绘图网络?

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

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

据我从您的评论中了解到的那样,您只需要将模型(myNetwork)和视图(graphArea)分开即可。

创建并添加图形区域,但

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

首先,网络为空(或者可能是一些isInitialized()检查)。一旦选择了文件并创建了网络,只需调用graphArea .repaint()即可反映模型更改。

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

相关内容

  • 没有找到相关文章

最新更新