首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >菜单中的Java Swing JSeparator位置不正确

菜单中的Java Swing JSeparator位置不正确
EN

Stack Overflow用户
提问于 2013-01-30 03:07:33
回答 1查看 1.1K关注 0票数 2

事实上,当我在Mac上运行我的程序时,我遇到了这个问题,而在windows或linux上却没有这个问题。有人知道为什么吗?

我的代码:

代码语言:javascript
复制
JMenuItem fileItem = new JMenuItem("Close");
KeyStroke ...
fileItem.add(new JSeparator(JSeparator.HORIZONTAL),BorderLayout.LINE_START);

截图:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-30 03:38:56

基本上,您现在的代码显示您假设JMenuItem有一个默认的BorderLayout,这可能是真的(但我不这么认为)。

虽然根本问题是您正在将JSeparator添加到JMenuItem,但实际上您应该通过JMenu#addSeparator()将其添加到包含各种JMenuItemJMenu#addSeparator()中。有关详细信息,请参阅How to Use Separators

你应该这样做:

代码语言:javascript
复制
JMenu menu=new JMenu();

JMenuItem item1=new JMenuItem("something 1");
JMenuItem item2=new JMenuItem("something 1");

menu.add(item1);
menu.addSeparator();//lets add that separator
menu.add(item2);

给你一些类似的东西:

更新:

下面是一个示例:

代码语言:javascript
复制
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingUtilities;

public class Test {

    public Test() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        JMenuBar menuBar=new JMenuBar();

        JMenu menu = new JMenu("File");
        JMenu menu2 = new JMenu("Else");

        JMenuItem item1 = new JMenuItem("something 1");
        JMenuItem item2 = new JMenuItem("something 2");
        JMenuItem item3 = new JMenuItem("else 1");
        JMenuItem item4 = new JMenuItem("else 2");

        menu2.add(item3);
        menu2.addSeparator();//lets add that separator
        menu2.add(item4);

        menu.add(menu2);
        menu.add(item1);
        menu.addSeparator();//lets add that separator
        menu.add(item2);

        menuBar.add(menu);

        frame.setJMenuBar(menuBar);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String args[]) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Test();
            }
        });
    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14590383

复制
相关文章

相似问题

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