2016-03-05 126 views
0

我正在学习使用java编程的GUI,并尝试修改现有程序以在框架顶部添加新的菜单栏。学习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进行排列?

只是玩弄的东西我对谷歌发现,我已经分开审讯以下片段(还没有把所有的代码):

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); 

我不知道我应该去哪个方向。任何指针非常感谢!

+2

看看[如何使用菜单](https://docs.oracle.com/javase/tutorial/uiswing/components/menu.html)。 –

回答

1

不要那样做,看看这个是你在找什么

这个链接是一个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 

现在上面的代码是一个非常简单的例子,以我如何设置菜单sugesst我概括这里的代码之后,你要学会在这个改善,因为这是只为你一个起点!

+0

非常感谢!刚刚设法创建(非常基本!)一个:) – javapalava

+0

很高兴我能帮助:) – Afflicted

1

我不确定是否应该添加一个新的JPanel,将它添加到JFrame中,然后在该添加按钮中?或者在现有面板或框架内创建一个JMenuBar,然后使用BorderLayout.NORTH进行排列?

这里有一些个人的经验,我可以与大家分享:

我通常会先规划我的用户界面的外观(无论是在我的脑海里在纸上)。之后,为容器决定合适的布局管理器

如果UI很复杂,我可以使用多于一个布局的嵌套面板。但最终,我通常会有一个主面板,其中包含所有其他组件(子面板/按钮/ textFields ..)。

将主面板添加到JFrame中。 (你可以有一个自定义的JPanel,而且我们很少需要一个定制的JFrame)。


至于菜单栏:

  • 添加的JMenuItem到JMenu的
  • 添加JMenu的到的JMenuBar
  • 使用frame.setJMenuBar(menuBar);

添加的JMenuBar的框架下图像应该可以帮助你理解分层CHY:

enter image description here