gpt4 book ai didi

菜单中的 Java Swing JSeparator 放置不正确

转载 作者:行者123 更新时间:2023-11-30 05:50:06 27 4
gpt4 key购买 nike

当我想为 Java Swing 应用程序插入带有 JSeparator 的分隔符时,我遇到了问题。事实上,我在 Mac 上运行我的程序时遇到了这个问题,但在 Windows 或 Linux 上却没有。分隔符放置不正确,文本带有删除线。有谁知道为什么吗?

我的代码:

JMenuItem fileItem = new JMenuItem("Close");
KeyStroke ...
fileItem.add(new JSeparator(JSeparator.HORIZONTAL),BorderLayout.LINE_START);

截图: enter image description here

最佳答案

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

尽管根本问题是您将 JSeparator 添加到 JMenuItem 而实际上您应该将它添加到包含通过 JMenu#addSeparator() 的各种 JMenuItem。参见 How to Use Separators了解更多。

你应该这样做:

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

给你类似的东西:

enter image description here

更新:

这是一个例子:

enter image description here

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

关于菜单中的 Java Swing JSeparator 放置不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14590383/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com