我的程序看起来像这样!
我想让底部动态地将框架加载到底部框架中,具体取决于在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();
}
});
但是找不到办法去做我想做的事。请解释一下。
答案 0 :(得分:4)
对于您拥有的每个Java文件,该Java文件的输出应为JPanel
。不是JFrame
。
在显示任何内容之前,请执行您拥有的所有Java文件。创建所有可能的JPanel
。
在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
。您可以使用多个JPanel
来创建GUI。
答案 1 :(得分:3)
更改底部组件取决于正在使用的布局管理器。 CardLayout旨在交换面板。
public void actionPerformed(ActionEvent arg0) {
int selectionID = selectorBox.getSelectedIndex();
if (selectionID == 0) {
cardLayout.show(basePanel, SELECTED_1);
}
// handle other selections
}