0

我的程序是这样的!

在此处输入图像描述

我想让底部根据在 ComboBox 中选择的项目动态地将框架加载到底部框架中。例如,如果选择了第一项,我希望显示 PresentValue.java 文件中的面板。这个想法是我为每个选择都有一个 java 文件,显示我在其各自的 java 文件中设计的内容。

在此处输入图像描述

在此处输入图像描述

这两个 java 文件应该放在我第一个屏幕截图的“底部”框中,具体取决于组合框中的选择。

我更习惯于Android编程,在那里我会简单地从片段中调用replace方法来换出加载的片段......在这里寻找类比。

final JComboBox selectorBox = new JComboBox(selection);
    selectorBox.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            int selectionID = selectorBox.getSelectedIndex();

        }
    });

但无法找到一种方法来做我想做的事。请解释。

4

2 回答 2

4

对于您拥有的每个 Java 文件,该 Java 文件的输出应该是JPanel. 不是一个JFrame

在显示任何内容之前,请执行您拥有的所有 Java 文件。创建所有可能JPanel的 s。

在 GUI 中创建 JFrame,然后使用 remove 和 add 方法JFrame删除或添加所需的JPanel.

这是我的一个 GUI 的示例。

public void updatePartControl() {
    Thread thread = new CountdownThread(model, this, displayPanel);
    thread.start();

    frame.remove(alarmPanel.getPanel());
    frame.add(displayPanel.getPanel());
    frame.validate();
    frame.pack();
    frame.setBounds(getBounds());
}

如果显示JPanel大于或小于警报,setBounds 方法会重置边界JPanel

您的应用程序应该有一个JFrame. 您使用多个JPanels 来创建您的 GUI。

于 2012-10-10T17:44:27.093 回答
3

更改底部组件将取决于正在使用的布局管理器。CardLayout是专为交换面板而设计的。

public void actionPerformed(ActionEvent arg0) {
   int selectionID = selectorBox.getSelectedIndex();
   if (selectionID == 0) {
      cardLayout.show(basePanel, SELECTED_1);
   } 
   // handle other selections

}
于 2012-10-10T17:46:02.980 回答