Java 在JPOppMenu中对齐图标和JCheckbox

Java 在JPOppMenu中对齐图标和JCheckbox,java,swing,jcheckbox,imageicon,jmenuitem,Java,Swing,Jcheckbox,Imageicon,Jmenuitem,我对jpopmpmenu中的一些图标和复选框有问题。复选框和图标未对齐 创建的项目如下所示: JMenuItem deleteAttributeMenuItem = new JMenuItem(locale.getString("TREE_AttrDelete"), iconDelete); JMenuItem primaryKeyAttributeMenuItem = new JCheckBoxMenuItem(locale.getString("TREE_AttrChkBoxPK"));

我对
jpopmpmenu
中的一些图标和复选框有问题。复选框和图标未对齐

创建的项目如下所示:

JMenuItem deleteAttributeMenuItem = new JMenuItem(locale.getString("TREE_AttrDelete"), iconDelete);

JMenuItem primaryKeyAttributeMenuItem = new JCheckBoxMenuItem(locale.getString("TREE_AttrChkBoxPK"));
请看图片:


有什么建议吗?

现在我找不到重新布局JCheckBoxMenuItem的正确方法

但是你同意Swing使用(默认)金属外观的标准输出吗?只是为了避免使用其他外观的错误理解,因为Swing的标准外观和感觉在API中也存在一些差异

来自教程代码(修改并删除了平衡和噪音)

这些方法以像素为单位讨论positions


看看这个,为了实现你想要的,我做了这个

JCheckBoxMenuItem cbmi = new JCheckBoxMenuItem("Check Me", null, true);
cbmi.setMargin(new java.awt.Insets(5, 25, 5, 5));
cbmi.setIconTextGap(15);
cbmi.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
helpMenu.add(cbmi);
这是上述东西的输出:


您是否尝试过使用、和以及最后一个?谢谢您的回答!但是这些都不起作用。欢迎并保持微笑,然后请检查您使用的图像,可能它们的左侧有一些东西,占据了该空间,请使用任何软件(如Paint、NeroSnapViewer、Gimp等)删除它们:-@Andreas Freitag这可以通过将LayoutManager设置为JMenuItem,但我从来没有尝试过,如果需要只布局到普通的JMenuItem或/With JCheckBoxMenuItem,你必须尝试一下,@mKorbel和nIcE cOw感谢你的回答。不,所有图标都是32*32,并由java调整大小!我尝试过一些不同的布局,但没有一个有效。该复选框似乎是文本的一部分,因此layoutmanager无法容纳它:(@aterai可以谢谢你的帖子吗!我只是在复选框中添加了图标(就像你一样)。现在看起来更好了,但并不完美!这是一个很好的解决方法。也许我们以后可以找到一个很好的解决方案。但现在我很满意。@Andreas Freitag使用1)JMenuItem.setIconTextGap(0);2)看看是否有用,3)我们都在等待陛下(@aterai),他被称为伟大的摇摆大师+1,这应该有效,不知道有任何其他方法可以实现这一点:(@nIcE cOw你可以从任何JMenuItems获得AbstractButton或BasicMenui,可以覆盖和强制没有标准方法或对齐,
JCheckBoxMenuItem cbmi = new JCheckBoxMenuItem("Check Me", null, true);
cbmi.setMargin(new java.awt.Insets(5, 25, 5, 5));
cbmi.setIconTextGap(15);
cbmi.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
helpMenu.add(cbmi);