首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >学习Java GUIs

学习Java GUIs
EN

Stack Overflow用户
提问于 2016-03-05 17:16:16
回答 3查看 88关注 0票数 0

我正在使用java学习GUI编程,并试图修改现有程序,在框架顶部添加一个新菜单栏。

主要的方法如下。MainPanel类扩展了JPanel并包含程序的主要组件(一个基本游戏)。

代码语言:javascript
复制
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上玩一些东西,我已经分别尝试了以下代码片段(还没有把所有的代码都放进去):

代码语言:javascript
复制
JMenuBar menuBar = new JMenuBar();
代码语言:javascript
复制
frame.add(new Button("Button"), BorderLayout.SOUTH);
代码语言:javascript
复制
panel.BorderLayout.SOUTH;
代码语言:javascript
复制
  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);

我不知道该往哪个方向走。任何指南针都是非常感谢的!

EN

回答 3

Stack Overflow用户

发布于 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上设置一个按钮

票数 1
EN

Stack Overflow用户

发布于 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();

代码语言:javascript
复制
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

现在,上面的代码是关于如何设置菜单的一个非常基本的例子,我建议遵循我在这里概述的代码,并且当您学习改进这一点时,这只是您的一个起点!

票数 1
EN

Stack Overflow用户

发布于 2016-03-05 20:07:23

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

以下是一些我可以与大家分享的个人经历:

我通常会首先计划我的用户界面的外观(无论是在我脑海中的纸上)。然后,为容器确定一个合适的布局管理器

如果UI是复杂的,我可以拥有多个布局的嵌套面板。

但最终,我通常会有一个主面板,它包含所有其他组件(子面板/按钮/textFields.)。

将主面板添加到JFrame中。(您可以使用自定义的JPanel,我们很少需要定制的JFrame)。

作为菜单栏:

  • 将JMenuItem添加到JMenu
  • 将JMenu添加到JMenuBar
  • 使用JMenuBar将frame.setJMenuBar(menuBar);添加到框架中

以下图像将有助于您理解层次结构:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35817183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档