如何根据菜单点击显示新的GUI

时间:2011-01-12 17:47:51

标签: java user-interface

我正在学习java并构建一个项目来测试基础知识。

我有一个菜单项FILE,然后是子菜单项,如

1)Front
2)Admin
3)Booking

我有单独的gui在单独的文件中制作,但我希望它们应该在一个区域中可见,点击子菜单

我正在使用swing,JmenuBar。另外其他guis正在使用Jframe

4 个答案:

答案 0 :(得分:1)

  

我有单独的gui在单独的文件中制作但我希望它们应该在一个区域中可见

大多数应用程序应该只有一个JFrame,这确实是您的要求,因为您希望在同一区域中显示单独的GUI。

因此,您的其他GUI不应扩展JFrame,而应扩展JPanel。然后,您可以在真实GUI上使用CardLayout来交换面板,这取决于从菜单中选择哪个面板。所有这些基本内容都在Swing tutorial中介绍。我想你会从以下部分开始:

  1. 如何使用卡片布局
  2. 如何使用菜单

答案 1 :(得分:0)

其他人已经讨论过ActionListeners和其他问题,所以这只是问题的一半。另一半是如何实际处理多个窗口。鉴于JFrame的精神暗示每个应用程序只应该有一个实例,我可能不会在每个不同的GUI中使用一个JFrame。相反,我会考虑使用JDialogJInternalFrame

,我不确定你的意思
  

......应该在一个区域内可见......

JInternalFrame将允许您实现类似multiple document interface的内容,其中所有子GUI将包含在主UI的框架内。 JDialog会为您提供JFrame之类的独立窗口。

答案 2 :(得分:0)

如果“它们应该在一个区域中可见”是指模态,那么您应该将所有JFrame更改为JDialogs并仅保留包含主菜单的JFrame。

答案 3 :(得分:-1)

为此,您需要为每个菜单项使用ActionListener。然后让每个侦听器将您想要的JFrame实例传递给控制窗口位置并显示它的方法。

//Make menu items
JMenuItem font = new JMenuItem();
font.addActionListener(new ActionListener() {
  showWindow(new FontFrame());
});
JMenuItem admin = new JMenuItem();
admin.addActionListener(new ActionListener() {
  showWindow(new AdminFrame());
});
...
//define frame handling method
void showWindow(JFrame f) {
  ...
  f.setVistible(true);
}