我正在使用java学习GUI编程,并试图修改现有程序,在框架顶部添加一个新菜单栏。
主要的方法如下。MainPanel类扩展了JPanel并包含程序的主要组件(一个基本游戏)。
public static void main(String[] args) {
JFrame frame = new JFrame("Sokuban");
MainPanel panel = new MainPanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.setContentPane(panel);
frame.pack();
frame.setVisible(true);
}我不确定是否应该添加一个新的JPanel,将它添加到JFrame中,然后在其中添加按钮?或者在现有面板或框架内创建一个JMenuBar,然后使用BorderLayout.NORTH来安排它?
我只是在google上玩一些东西,我已经分别尝试了以下代码片段(还没有把所有的代码都放进去):
JMenuBar menuBar = new JMenuBar();frame.add(new Button("Button"), BorderLayout.SOUTH);panel.BorderLayout.SOUTH; JPanel frame2 = new JPanel();
window.add(frame2, BorderLayout.NORTH);
JButton b1 = new JButton();
frame2.setSize(500,500);
b1.setSize(400,400);
b1.setVisible(true);
b1.setText("Button");
frame2.add(b1);
frame2.setVisible(true);我不知道该往哪个方向走。任何指南针都是非常感谢的!
发布于 2016-03-05 17:22:24
首先:https://docs.oracle.com/javase/tutorial/uiswing/components/menu.html :)这是关于JMenuBar的非常简单的教程。)如果您只想在JBarMenu:How to make a JMenu have Button behaviour in a JMenuBar上设置一个按钮
发布于 2016-03-05 20:06:36
别那么做,看看这就是你要找的
此链接用于JMenuBar https://docs.oracle.com/javase/7/docs/api/java/awt/MenuBar.html。
此链接用于JMenu https://docs.oracle.com/javase/7/docs/api/javax/swing/JMenu.html。
此链接用于JMenuItem https://docs.oracle.com/javase/7/docs/api/javax/swing/JMenuItem.html。
不需要一个新的JFrame来创建菜单,您可以使用JMenuBar();
JMenuBar myMenu = new JMenuBar();
//The above snippet does not create or add menus it's simply the container that holds them
JMenu fileMenu = new JMenu("File"); // This will create a menu named file
JMenuItem openChoice = new JMenuItem("Open"); /* This will create an option under
the fileMenu named open*/
//To Actually add these things you would do this
setJMenuBar(myMenu);
myMenu.add(fileMenu); // This adds fileMenu to the menubar
fileMenu.add(openChoice); // This adds openChocie to the JMenu named fileOption现在,上面的代码是关于如何设置菜单的一个非常基本的例子,我建议遵循我在这里概述的代码,并且当您学习改进这一点时,这只是您的一个起点!
发布于 2016-03-05 20:07:23
我不确定是否应该添加一个新的JPanel,将它添加到JFrame中,然后在其中添加按钮?或者在现有面板或框架内创建一个JMenuBar,然后使用BorderLayout.NORTH来安排它?
以下是一些我可以与大家分享的个人经历:
我通常会首先计划我的用户界面的外观(无论是在我脑海中的纸上)。然后,为容器确定一个合适的布局管理器。
如果UI是复杂的,我可以拥有多个布局的嵌套面板。
但最终,我通常会有一个主面板,它包含所有其他组件(子面板/按钮/textFields.)。
将主面板添加到JFrame中。(您可以使用自定义的JPanel,我们很少需要定制的JFrame)。
作为菜单栏:
frame.setJMenuBar(menuBar);添加到框架中以下图像将有助于您理解层次结构:

https://stackoverflow.com/questions/35817183
复制相似问题