Swing UI延迟添加和删除元素
我在inputWidget和outputWidget中都存储了一个表单。按钮addInput和addOutput将在secondaryInOutPanel中显示两种不同的形式 但是,通过单击按钮在表单之间移动时会出现明显延迟。事实上,当我试图点击表单时,它会改变。还有一些可见的图画来自于透水的形式 我试着使用SwingUtilities,但这导致了最糟糕的延迟Swing UI延迟添加和删除元素,swing,swingutilities,metawidget,Swing,Swingutilities,Metawidget,我在inputWidget和outputWidget中都存储了一个表单。按钮addInput和addOutput将在secondaryInOutPanel中显示两种不同的形式 但是,通过单击按钮在表单之间移动时会出现明显延迟。事实上,当我试图点击表单时,它会改变。还有一些可见的图画来自于透水的形式 我试着使用SwingUtilities,但这导致了最糟糕的延迟 secondaryInOutPanel = new JPanel(new BorderLayout()); second
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相对于上述重新绘制方法的优势是什么?正如我已经提到的,布局完成了所有面板交换的工作,并且面板的大小基于所有面板的大小。