Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swing UI延迟添加和删除元素_Swing_Swingutilities_Metawidget - Fatal编程技术网

Swing UI延迟添加和删除元素

Swing UI延迟添加和删除元素,swing,swingutilities,metawidget,Swing,Swingutilities,Metawidget,我在inputWidget和outputWidget中都存储了一个表单。按钮addInput和addOutput将在secondaryInOutPanel中显示两种不同的形式 但是,通过单击按钮在表单之间移动时会出现明显延迟。事实上,当我试图点击表单时,它会改变。还有一些可见的图画来自于透水的形式 我试着使用SwingUtilities,但这导致了最糟糕的延迟 secondaryInOutPanel = new JPanel(new BorderLayout()); second

我在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                      
                }                   
            });
        }
    }); 

进行更改后,您需要在
Secondary InOutpanel
上调用
revalidate()
和/或
repaint()

您需要调用
revalidate()
和/或
repaint()进行更改后,您需要在
secondaryInOutPanel
上调用
revalidate()
和/或
secondaryInOutPanel
上的
重新绘制()

进行更改后,您需要调用
revalidate()
和/或
repaint())进行更改后,请在
第二个InOutPanel
上执行

更好的设计是使用A固定输入和输出面板。然后,您可以根据需要交换面板。然后,CardLayout将为您管理面板的重新验证和重新喷漆。

更好的设计是使用A来保存输入和输出面板。然后,您可以根据需要交换面板。然后,CardLayout将为您管理面板的重新验证和重新喷漆。

更好的设计是使用A来保存输入和输出面板。然后,您可以根据需要交换面板。然后,CardLayout将为您管理面板的重新验证和重新喷漆。

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

+1,用于在可见GUI中添加/删除组件时重新验证()和重新绘制()的一般规则。但是,在交换整个面板时(即,每当我看到
removeAll()
方法的使用时),通常会有更好的设计。+1,在从可见GUI添加/删除组件时,一般规则是重新验证()和重新绘制()。但是,在交换整个面板时(即,每当我看到
removeAll()
方法的使用时),通常会有更好的设计。+1,在从可见GUI添加/删除组件时,一般规则是重新验证()和重新绘制()。但是,在交换整个面板时(即,每当我看到
removeAll()
方法的使用时),通常会有更好的设计。+1,在从可见GUI添加/删除组件时,一般规则是重新验证()和重新绘制()。但是,在交换整个面板时(即,每当我看到使用
removeAll()
方法时)通常有更好的设计。使用CardLayout与上述重绘方法相比有什么优势?正如我已经提到的,布局完成了交换面板的所有工作,面板的大小基于所有面板的大小。使用CardLayout与上述重绘方法相比有什么优势如上所述?正如我已经提到的,布局完成了交换面板的所有工作,面板的大小基于所有面板的大小。使用CardLayout相对于上述重新绘制方法的优势是什么?正如我已经提到的,布局完成了交换面板的所有工作,面板的大小基于所有面板的大小面板。使用CardLayout相对于上述重新绘制方法的优势是什么?正如我已经提到的,布局完成了所有面板交换的工作,并且面板的大小基于所有面板的大小。