我想创建一个最初是最大化的JFrame,并且具有定义的大小,当用户按下最大化按钮时,它会缩小到。
最小示例:
package minimalfullscreenexample; import java.awt.Dimension; import static java.awt.Frame.MAXIMIZED_BOTH; import javax.swing.JFrame; import javax.swing.SwingUtilities; public class MinimalFullscreenExample { public void displayFrame() { JFrame frame = new JFrame("Minimal example"); frame.setExtendedState(MAXIMIZED_BOTH); frame.setPreferredSize(new Dimension(500, 300)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> { new MinimalFullscreenExample().displayFrame(); }); } }
预期的行为:窗口将最大化打开。当用户单击最大化按钮时,该窗口将变为非最大化状态,并且大小为500x300像素。
这应该和它一起工作
不适用于
窗口未最大化打开的位置。
当删除setPreferredSize
调用后,窗口将最大化打开,但在未最大化时缩小为“无”。
是否有已知的错误或解决方法? (将setPreferredSize
移到setExtendedState
上方无济于事。
我想创建一个最初是最大化的JFrame,并且具有定义的大小,当用户按下最大化按钮时,它会缩小到。最小示例:包minimalfullscreenexample;导入java ....
我也遇到过同样的问题,但是我设法解决了。问题是frame.pack()。实际上,它会将框架的大小设置为其首选大小。我还注意到Java 8(或9)与Java 12之间的区别,我认为这是openjdk上的错误。
我认为您只是误解了pack的效果: