我正在学习java并构建一个项目来测试基础知识。
我有一个菜单项FILE,然后是子菜单项,如
1)Front
2)Admin
3)Booking
我有单独的gui在单独的文件中制作,但我希望它们应该在一个区域中可见,点击子菜单
我正在使用swing,JmenuBar。另外其他guis正在使用Jframe
答案 0 :(得分:1)
我有单独的gui在单独的文件中制作但我希望它们应该在一个区域中可见
大多数应用程序应该只有一个JFrame,这确实是您的要求,因为您希望在同一区域中显示单独的GUI。
因此,您的其他GUI不应扩展JFrame,而应扩展JPanel。然后,您可以在真实GUI上使用CardLayout来交换面板,这取决于从菜单中选择哪个面板。所有这些基本内容都在Swing tutorial中介绍。我想你会从以下部分开始:
答案 1 :(得分:0)
其他人已经讨论过ActionListeners
和其他问题,所以这只是问题的一半。另一半是如何实际处理多个窗口。鉴于JFrame的精神暗示每个应用程序只应该有一个实例,我可能不会在每个不同的GUI中使用一个JFrame
。相反,我会考虑使用JDialog或JInternalFrame。
......应该在一个区域内可见......
但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);
}