在启动应用程序时设置JFrame的最大大小

Abh*_*ary 5 java swing jframe

我想在启动应用程序时设置JFrame的最大大小.问题是,如果屏幕分辨率更高,我的帧越来越大,但那时它不应超过定义的最大范围,但同样的情况下工作正常,分辨率低.

就像我希望我的框架最大为(500,500),所以我写了这段代码:

JFrame frame = new JFrame("FRAME TRANSPARENT");
frame.setSize((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth()-50), (int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight()-150));
frame.setMaximizedBounds(new Rectangle(0,0 , 500, 500)); 
frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

即使我设置了绑定,JFrame正在考虑使用setSize方法,似乎它忽略了setMaximizedBounds方法.我已经尝试使用setMaximumized方法,但获得了相同的输出.

小智 6

我试过了,你是对的,setMaximumSize()不起作用..所有这些年都无法知道!主要是我对限制大小的要求是固定的setResizable(false),虽然我看到你对最小和最大尺寸的具体查询是不同的

为您解决了一个问题:

public class MaxSizeUI
{
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new MaxSizeUI().makeUI();
            }
        });
    }

    public void makeUI() {
        final JFrame frame = new JFrame("Sample Fram") {

            @Override
            public void paint(Graphics g) {
                Dimension d = getSize();
                Dimension m = getMaximumSize();
                boolean resize = d.width > m.width || d.height > m.height;
                d.width = Math.min(m.width, d.width);
                d.height = Math.min(m.height, d.height);
                if (resize) {
                    Point p = getLocation();
                    setVisible(false);
                    setSize(d);
                    setLocation(p);
                    setVisible(true);
                }
                super.paint(g);
            }
        };
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 150);
        frame.setMaximumSize(new Dimension(400, 200));
        frame.setMinimumSize(new Dimension(200, 100));
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)