java—使用全屏打开的jmenubar制作jframe

abithluo  于 2021-07-11  发布在  Java
关注(0)|答案(2)|浏览(411)

我有一个jframe,我想添加一个菜单栏,然后让jframe自动全屏打开。如果我只是制作一个jframe并用 f.setExtendedState(f.getExtendedState()|JFrame.MAXIMIZED_BOTH ); 很好用:

  1. import javax.swing.*;
  2. public class testframe {
  3. private static JFrame f;
  4. public static void main(String[] args) {
  5. SwingUtilities.invokeLater(testframe::createAndShowGUI);
  6. }
  7. private static void createAndShowGUI() {
  8. f = new JFrame("Test");
  9. f.setExtendedState( f.getExtendedState()|JFrame.MAXIMIZED_BOTH );
  10. f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);;
  11. f.pack();
  12. f.setVisible(true);
  13. }
  14. }

但是,一旦我将jmenubar添加到jframe中,它将不再全屏打开:

  1. import javax.swing.*;
  2. public class testframe {
  3. private static JFrame f;
  4. public static void main(String[] args) {
  5. SwingUtilities.invokeLater(testframe::createAndShowGUI);
  6. }
  7. private static void createAndShowGUI() {
  8. f = new JFrame("Test");
  9. JMenuBar menubar = new JMenuBar();
  10. JMenu j_menu = new JMenu("Test");
  11. JMenuItem j_menu_item = new JMenuItem("Test_item");
  12. j_menu.add(j_menu_item);
  13. menubar.add(j_menu);
  14. f.setJMenuBar(menubar);
  15. f.setExtendedState( f.getExtendedState()|JFrame.MAXIMIZED_BOTH );
  16. f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);;
  17. f.pack();
  18. f.setVisible(true);
  19. }
  20. }

这可能是什么原因?
更新:
切换到jdk11解决了这个问题。我以前15岁,也试过14岁,都有问题。

ctehm74n

ctehm74n1#

一旦我将jmenubar添加到jframe中,它将不再全屏打开:
为我全屏显示。我在windows10中使用jdk11。
但是,菜单不起作用,因为您有一个编码问题。您需要将jmenu添加到jmenubar。

  1. //menubar.add(j_menu_item);
  2. menubar.add(j_menu);

而且,我总是用:

  1. f.setExtendedState( JFrame.MAXIMIZED_BOTH );
yv5phkfx

yv5phkfx2#

你得打电话给警察 JFrame 方法的正确顺序。

  1. import javax.swing.JFrame;
  2. import javax.swing.JMenu;
  3. import javax.swing.JMenuBar;
  4. import javax.swing.JMenuItem;
  5. import javax.swing.SwingUtilities;
  6. public class TestFrame {
  7. private static JFrame f;
  8. public static void main(String[] args) {
  9. SwingUtilities.invokeLater(TestFrame::createAndShowGUI);
  10. }
  11. private static void createAndShowGUI() {
  12. f = new JFrame("Test");
  13. f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  14. JMenuBar menubar = new JMenuBar();
  15. JMenu j_menu = new JMenu("Test");
  16. JMenuItem j_menu_item = new JMenuItem("Test_item");
  17. j_menu.add(j_menu_item);
  18. menubar.add(j_menu);
  19. f.setJMenuBar(menubar);
  20. f.pack();
  21. f.setExtendedState(f.getExtendedState() | JFrame.MAXIMIZED_BOTH);
  22. f.setVisible(true);
  23. }
  24. }
展开查看全部

相关问题