我在Java应用程序中遇到了JMenuBar位置的问题。
我实际上正在使用article中的ComponentResizer.java代码。
除了从我的应用程序的北部区域以外,调整大小的一切工作正常 (未修饰的JFrame)及其角落(北区)因为JMenuBar阻止我从该区域调整大小。
是否有解决方案或者黑客可以将JMenuBar向下移动一点或启用Resizing 在北方地区?
我还使用setJMenuBar()
方法将JMenuBar添加到我的应用程序的北区。
代码:
public class MyApp extends JFrame {
private MyApp frame;
private JMenuBar menuBar;
public static void main(String[] args) {
frame = new MyApp();
frame.setUndecorated(true);
frame.setVisible(true);
}
public MyApp(){
initComponents();
}
private void initComponents(){
setTitle("MediaForm");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 673, 482);
menuBar = new JMenuBar();
setJMenuBar(menuBar);
}
}
答案 0 :(得分:1)
我没有对此进行测试,但JRootPane
为JComponet
,可能会向其中添加EmptyBorder
,从而允许JMenuBar
进行偏移。
如果做不到这一点,您可能需要实施自己的JRootPane
来管理JMenuBar
&的布局。内容窗格
更新测试
public class TestMenuFrame extends JFrame {
public TestMenuFrame() throws HeadlessException {
setTitle("Test");
getRootPane().setBorder(new EmptyBorder(10, 10, 10, 10));
JMenuBar mb = new JMenuBar();
mb.add(new JMenu("Test"));
setJMenuBar(mb);
setSize(100, 100);
getContentPane().setBackground(Color.RED);
setLocationRelativeTo(null);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new TestMenuFrame().setVisible(true);
}
}
答案 1 :(得分:1)
JMenuBar扩展了JComponent,因此您可以将它放在任何放置普通组件的位置。请注意,如果您将其置于意外位置,可能会让用户感到困惑。