如何在不同类中使用JTabbedPanel和JPanel?

时间:2016-08-22 11:29:04

标签: swing user-interface jpanel jtabbedpane

我正在尝试开发一个Swing应用程序,该应用程序由带有不同选项卡的窗口组成(事实上,每个选项卡都是一个独立的表单)。

所以我想在不同的类中分离不同形式的代码。

我在IntelliJ中使用GUI表单。首先,我创建了一个包含JFrame的主体表单(JTabbedPane)。我以同样的方式用自己的java类创建了一些其他表单。这些表单为JPanel

Principal.form:

enter image description here

相关的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:

enter image description here

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,我把好的东西放在了适当位置。

执行应用程序:

enter image description here

但我的问题是所有形式都是空的(除了校长)。例如,我使用GUI表单创建了所有我的" creationRecette"形成。它在creation.java中创建自动生成的代码。但如果我没有放this.add(component1) ....我无法看到表单中的不同组件。我认为还有另一种解决方案,因为组件没有按照我的意愿显示(如creation.form

我不明白为什么主窗体正确显示但我不能对其他标签做同样的事情。

你能帮助我吗?

0 个答案:

没有答案