Я должен просмотров:Невозможно добавить JPanel в JFrame на лету
- MainWindowView (расширяет JFrame)
- ScanOptimisationView (расширяет JPanel)
Итак, у меня есть выпадающий в Класс MainWindowView. И я создаю ActionListener и привязываю его к этому combobox. actionPerfomed() этого ActionListener пытается добавить панель ScanOptimisationView в основную рамку окна. Вот код:
package ru.belaventcev.view;
import java.awt.Container;
public class MainWindowView extends JFrame{
private int frmHeight = 525;
private int frmWidth = 650;
public Container frmContainer;
public static JButton btnCalc;
public static JComboBox cbMethods;
public MainWindowView(){
setPreferredSize(new Dimension(frmWidth, frmHeight));
setSize(frmWidth, frmHeight);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
frmContainer = getContentPane();
frmContainer.setLayout(new MigLayout("", "[grow,center]", "[::30px,grow,center][grow,center][::500px,grow,center][::25px,grow,center]"));
cbMethods = new JComboBox();
cbMethods.setModel(new DefaultComboBoxModel(new JPanel[] {new ScanOptimisationView()}));
cbMethods.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JPanel temp = (JPanel) cbMethods.getSelectedItem();
frmContainer.add(temp, "cell 0 1,span");
}
});
/*
* If I uncomment this, panel is shown!
JPanel temp = (JPanel) cbMethods.getSelectedItem();
frmContainer.add(temp, "cell 0 1");
*/
frmContainer.add(cbMethods, "cell 0 0,growx");
btnCalc = new JButton("Расчитать");
frmContainer.add(btnCalc, "cell 0 3,alignx right");
}
}
Не могли бы вы помочь мне понять - почему панель не показано с кодом в actionPerformed(), но показано, когда я использую ниже код?
это хорошо работает! Спасибо! Мне нужно быть более внимательным к документам :) – dizpers