0

我有一个存储在 inputWidget 和 outputWidget 中的表单。addInput 和addOutput 按钮将在secondaryInOutPanel 中显示两种不同的形式。

但是,通过单击按钮在表单之间移动时会出现明显延迟。实际上,当我尝试单击表单时它会发生变化。并且从以前的形式中仍然有一些可见的图纸。

我尝试使用 SwingUtilities 但这导致延迟最严重。

    secondaryInOutPanel = new JPanel(new BorderLayout());
    secondaryInOutPanel.setMinimumSize(new Dimension(200,400));     

    JPanel btnPanel = new JPanel();
    outinPanel.add(btnPanel, BorderLayout.NORTH);

    JButton addInput = new JButton("Add Input");
    btnPanel.add(addInput);
    addInput.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            secondaryInOutPanel.removeAll();                                
            secondaryInOutPanel.add(inputWidget, BorderLayout.NORTH);               
            JButton addBtn = new JButton("Save Input");
            secondaryInOutPanel.add(addBtn, BorderLayout.SOUTH);
            addBtn.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub                      
                }                   
            });
        }
    });

    JButton addOutput = new JButton("Add Output");
    btnPanel.add(addOutput);
    addOutput.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            secondaryInOutPanel.removeAll();                            
            secondaryInOutPanel.add(outputWidget, BorderLayout.NORTH);              
            JButton addBtn = new JButton("Save Output");
            secondaryInOutPanel.add(addBtn, BorderLayout.SOUTH);
            addBtn.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub                      
                }                   
            });
        }
    }); 
4

2 回答 2

2

更好的设计是使用卡片布局来保存输入和输出面板。然后您可以根据需要交换面板。然后 CardLayout 将为您管理面板的重新验证和重新绘制。

于 2013-12-16T16:41:03.963 回答
1

进行更改后,您需要调用revalidate()和 或repaint()on 。secondaryInOutPanel

于 2013-12-16T16:36:25.383 回答