JFrame.setExtendedState实际上没有最大化

public static void main(String args[]){ JFrame frame = new JFrame(); frame.setExtendedState(JFrame.MAXIMISED_BOTH); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } 

我已经使用此代码来最大化JFrame,但实际上不是最大化帧,而是将窗口大小设置为屏幕的大小,而不实际更改状态,因此单击最大化按钮实际上不会再次缩小它。

我使用了错误的命令还是什么?

你在frame.setExtendedState(JFrame.MAXIMISED_BOTH);有错误frame.setExtendedState(JFrame.MAXIMISED_BOTH);

你应该写frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 代替

你试过这个吗?

 f.setExtendedState(f.getExtendedState() | JFrame.MAXIMIZED_BOTH); 

根据您提供的示例并在Windows 7上运行…

“最大化”状态(这是窗口的裁剪版本,因为原始版本相当大)

在此处输入图像描述

“正常”状态

在此处输入图像描述

 import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; public class ExtendedFrame { public static void main(String[] args) { new ExtendedFrame(); } public ExtendedFrame() { EventQueue.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { } JFrame frame = new JFrame(); // frame.setExtendedState(JFrame.MAXIMISED_BOTH); frame.setExtendedState(JFrame.MAXIMIZED_BOTH); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); } } 

您必须默认它最大化。 因为最大化按钮可以开箱即用。

frame.setExtendedState(JFrame.MAXIMIZED_BOTH)适用于Linux x64。 这是我测试过的程序:

 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Test implements ActionListener { public static void main(String... args) { new Test(); } private JFrame frame; public Test() { frame = new JFrame(); frame.add(new JLabel("Hi!"), BorderLayout.CENTER); JButton button = new JButton("maximize"); button.addActionListener(this); frame.add(button, BorderLayout.SOUTH); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { frame.setExtendedState(JFrame.MAXIMIZED_BOTH); } } 

这对我有用:

我们需要将setSize()和setExtendedState组合在一起JFrame frame = new JFrame();

 frame.setExtendedState(JFrame.MAXIMIZED_BOTH); // aligns itself with windows task bar // set maximum screen frame.setSize((int)Toolkit.getDefaultToolkit().getScreenSize().getWidth(), (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight()); 

应用更改时应使用此选项

 frame.setResizable(true); 

它适用于我在WinXP机器上运行Java 7。

为了记录,这就是SSCCE应该是这样的:

 import javax.swing.*; public class JFrameExtendedDemo { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(300, 200); f.setLocationRelativeTo(null); f.setVisible(true); // Then: f.setExtendedState(JFrame.MAXIMIZED_BOTH); } }); } }