Swing UI Задержка добавления и удаления элементов
У меня есть форма, хранящаяся в inputWidget и outputWidget. Кнопки addInput и addOutput будут отображать две разные формы в secondInOutPanel.
Однако при перемещении между формами при нажатии кнопок происходит значительная задержка. На самом деле это меняется, когда я пытаюсь нажать на форму. И есть еще некоторые видимые рисунки из предыдущей формы.
Я пытался использовать 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
}
});
}
});
2 ответа
Лучшим дизайном является использование макета карты для размещения ваших панелей ввода и вывода. Тогда вы можете просто поменять панели по мере необходимости. Затем Card Layout будет управлять повторной проверкой и перекрашиванием панели для вас.
Вам нужно позвонить revalidate()
и или repaint()
на secondaryInOutPanel
после внесения изменений.