当我想要使用JSeparator for Java Swing应用程序插入分隔符时,我遇到了问题。事实上,当我在Mac上运行我的程序时,我遇到了这个问题,我在Windows或Linux上没有它。分隔符放置不正确,文本是删除线。有谁知道为什么?
我的代码:
JMenuItem fileItem = new JMenuItem("Close");
KeyStroke ...
fileItem.add(new JSeparator(JSeparator.HORIZONTAL),BorderLayout.LINE_START);
截图:
答案 0 :(得分:6)
基本上你的代码现在表明你假设JMenuItem
有一个默认的BorderLayout
,这可能是真的(但我不这么认为)。
虽然根本问题是您要将JSeparator
添加到JMenuItem
,但事实上您应该将其添加到JMenu
,其中包含各种JMenuItem
来自JMenu#addSeparator()
{1}}。有关详情,请参阅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);
给你一些类似的东西:
<强>更新强>
以下是一个例子:
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();
}
});
}
}