Tof*_*Tof 2 java swing jmenuitem jmenu jseparator
当我想插入一个带有JSeparator for Java Swing应用程序的分隔符时,我遇到了问题.事实上,当我在Mac上运行我的程序时,我遇到了这个问题,我在Windows或Linux上没有它.分隔符放置不正确,文本是删除线.有谁知道为什么?
我的代码:
JMenuItem fileItem = new JMenuItem("Close");
KeyStroke ...
fileItem.add(new JSeparator(JSeparator.HORIZONTAL),BorderLayout.LINE_START);
Run Code Online (Sandbox Code Playgroud)
截图:

基本上你的代码现在表明你假设JMenuItem有一个默认值BorderLayout,这可能是真的(但我不这么认为).
虽然根本问题是你正在添加JSeparator到JMenuItem实际上你应该将它添加到JMenu包含各种JMenuItems via的内容JMenu#addSeparator().有关更多信息,请参见如何使用分隔符.
你应该做的事情如下:
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);
Run Code Online (Sandbox Code Playgroud)
给你这样的东西:

更新:
这是一个例子:

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();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)