gpt4 book ai didi

Java JMenuBar : Vertical JSeparator

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:57:25 26 4
gpt4 key购买 nike

我正在尝试在我的菜单中添加一个垂直的 JSeparator。但它在我的 MenuItems 之间留有边距。我希望我的项目保持在左侧而不是左 - 中 - 右。

外观: enter image description here我想要的是: enter image description here

   JMenu settings = new JMenu("Settings");
image = ImageIO.read(new File(Constants.IMAGES_DIR + File.separator + "settings.png"));
settings.setHorizontalTextPosition(SwingConstants.CENTER);
settings.setVerticalTextPosition(SwingConstants.BOTTOM);
settings.setIcon(new ImageIcon(image));
add(settings);

JMenu build = new JMenu("Builder");
image = ImageIO.read(new File(Constants.IMAGES_DIR + File.separator + "build.png"));
build.setHorizontalTextPosition(SwingConstants.CENTER);
build.setVerticalTextPosition(SwingConstants.BOTTOM);
build.setIcon(new ImageIcon(image));
add(build);

add(new JSeparator(JSeparator.VERTICAL));

JMenu help = new JMenu("Help");
image = ImageIO.read(new File(Constants.IMAGES_DIR + File.separator + "help.png"));
help.setHorizontalTextPosition(SwingConstants.CENTER);
help.setVerticalTextPosition(SwingConstants.BOTTOM);
help.setIcon(new ImageIcon(image));
add(help);

希望你明白我想要什么。

最佳答案

我建议使用 JToolBar 而不是 JMenuBar 来做到这一点。但是,如果您必须/应该/喜欢使用 JMenuBar 来做,这里有一个例子:

public class Test {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();

JMenuBar bar = new JMenuBar();
bar.setLayout(new MigLayout());

JMenu listSth = new JMenu("A");
listSth.setHorizontalTextPosition(SwingConstants.CENTER);
listSth.setVerticalTextPosition(SwingConstants.BOTTOM);
bar.add(listSth);

JSeparator sep1 = new JSeparator(JSeparator.VERTICAL);
bar.add(sep1, "growy");
JMenu module = new JMenu("B");
module.setHorizontalTextPosition(SwingConstants.CENTER);
module.setVerticalTextPosition(SwingConstants.BOTTOM);
bar.add(module);

JMenu settings = new JMenu("Settings");
settings.setHorizontalTextPosition(SwingConstants.CENTER);
settings.setVerticalTextPosition(SwingConstants.BOTTOM);
bar.add(settings);

JMenu build = new JMenu("Builder");
build.setHorizontalTextPosition(SwingConstants.CENTER);
build.setVerticalTextPosition(SwingConstants.BOTTOM);
bar.add(build);

JSeparator sep2 = new JSeparator(JSeparator.VERTICAL);
bar.add(sep2, "growy");

JMenu help = new JMenu("Help");
help.setHorizontalTextPosition(SwingConstants.CENTER);
help.setVerticalTextPosition(SwingConstants.BOTTOM);
bar.add(help);

frame.setJMenuBar(bar);
frame.pack();
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}

简单来说 - 您可以使用 MigLayout 并在 JSeparators 上设置“growy”。有许多其他解决方案(使用不同的布局)。

关于Java JMenuBar : Vertical JSeparator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10654587/

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