我正在尝试开发一个Swing应用程序,该应用程序由带有不同选项卡的窗口组成(事实上,每个选项卡都是一个独立的表单)。
所以我想在不同的类中分离不同形式的代码。
我在IntelliJ中使用GUI表单。首先,我创建了一个包含JFrame
的主体表单(JTabbedPane
)。我以同样的方式用自己的java类创建了一些其他表单。这些表单为JPanel
。
Principal.form:
相关的java类:
public class Principal extends JFrame {
private JTabbedPane tabbedPane1;
// Pour le panel Principal
private JPanel panel1;
private JLabel nouveaute_1;
private JLabel nouveaute_2;
private JLabel nouveaute_3;
private JLabel repas_midi;
private JLabel repas_soir;
private JLabel date_du_jour;
// Pour les autres onglets
private JPanel panel_creation = new CreationRecette();
public Principal() {
init();
this.getContentPane().add(tabbedPane1);
init_panel_creation();
}
//------------------------------------------------------------------------------------------------------------------
private void init(){
this.setTitle("CookApp");
this.setSize(800, 600);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
//------------------------------------------------------------------------------------------------------------------
private void init_panel_principal(){
// Affichage de la date du jour
DateFormat dateFormat = new SimpleDateFormat("E dd MMM yyyy HH:mm");
Calendar cal = Calendar.getInstance();
date_du_jour.setText(dateFormat.format(cal.getTime()));
//TODO Affichage des 3 dernières nouveautés (date, qui, update/création, quoi)
//TODO Affichage du repas du midi et du soir
}
//------------------------------------------------------------------------------------------------------------------
private void init_panel_creation(){
tabbedPane1.add("Création", panel_creation);
}
}
CreationRecette.form:
creationRecette.form的相关代码:
public class CreationRecette extends JPanel {
private JTextField text_nom_recette;
private JComboBox combo_type;
private JComboBox combo_tps_preparation;
private JComboBox combo_tps_cuisson;
private JComboBox combo_thermostat;
private JTextArea text_ingredients;
private JTextArea text_recette;
private JButton bouton_valider;
private JComboBox combo_nb_part;
private JTextField text_source;
private JPanel panel_creation;
private JLabel label_nom_recette;
private JLabel label_source;
private JLabel label_type;
private JLabel label_tps_preparation;
private JLabel label_tps_cuisson;
private JLabel label_thermostat;
private JLabel label_nb_part;
private JLabel label_ingredients;
private JLabel label_recette;
public CreationRecette() {
this.setVisible(true);
}
}
所以现在,我可以毫无问题地显示主要表格。我尝试在Jpanel
中插入其他格式/ JTabbedPane
的差异。因此,当我执行main时,我有我的主要表单以及不同的表单,这些表单是不同的表单。所以我认为在principal.java
,我把好的东西放在了适当位置。
执行应用程序:
但我的问题是所有形式都是空的(除了校长)。例如,我使用GUI表单创建了所有我的" creationRecette"形成。它在creation.java
中创建自动生成的代码。但如果我没有放this.add(component1)
....我无法看到表单中的不同组件。我认为还有另一种解决方案,因为组件没有按照我的意愿显示(如creation.form
)
我不明白为什么主窗体正确显示但我不能对其他标签做同样的事情。
你能帮助我吗?