尝试setHorizontalTextPosition(SwingConstants.CENTER);
紧随其后invalidate();
或者使用边距:
JMenu optionsMenu = new JMenu("Option");
optionsMenu.setMargin(new Insets(5, 50, 5, 5));
我做了一个简短的 SSCCE,看看我是否可以重新制定问题,但我的问题似乎从一开始就完全一致,不需要上述任何内容:
截图链接:http: //img713.imageshack.us/img713/1489/67449235.jpg
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.SwingUtilities;
public class JMenuCenterTest extends JFrame {
public JMenuCenterTest() {
createUI();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new JMenuCenterTest().setVisible(true);
}
});
}
private void createUI() {
setTitle("JMenu Center Test");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 300);
JMenuBar bar = new JMenuBar();
JMenu menu1 = new JMenu("File");
//menu1.setMargin(new Insets(5, 50, 5, 5));
JMenu menu2 = new JMenu("Options");
JMenu menu3 = new JMenu("Help");
//menu1.setHorizontalTextPosition(SwingConstants.CENTER);
// invalidate();
bar.add(menu1);
bar.add(menu2);
bar.add(menu3);
getContentPane().add(bar, BorderLayout.NORTH);
}
}
参考: