【问题标题】:Java Swing dynamic loading of classes into panelsJava Swing 将类动态加载到面板中
【发布时间】:2012-10-10 17:28:36
【问题描述】:

我的程序是这样的!

我想让底部根据在 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();

        }
    });

但找不到做我想做的事的方法。请解释一下。

【问题讨论】:

  • 自己加载一个框架..请解释一下..
  • 查看编辑,我需要根据框中选择的内容动态更改底部
  • PresentValue.java 是什么?它是 JPanel 的子类吗?

标签: java swing jpanel jcombobox


【解决方案1】:

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

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

在您的 GUI 中创建您的 JFrame,然后使用 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 大于或小于警报JPanel,setBounds 方法会重置边界。

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

【讨论】:

  • 进行了一些编辑,应该更清楚我需要什么。请指教
【解决方案2】:

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

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

}

【讨论】:

  • 进行了一些编辑,应该更清楚我需要什么。请指教
猜你喜欢
  • 2012-06-03
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多