我想在启动应用程序时设置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);
即使我设置了绑定,JFrame正在考虑使用setSize方法,似乎它忽略了setMaximizedBounds方法。 我已经尝试过使用setMaximumized方法但输出相同。
答案 0 :(得分: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);
}
}
答案 1 :(得分:2)
一种可能的解决方案是:
Dimension DimMax = Toolkit.getDefaultToolkit().getScreenSize();
frame.setMaximumSize(DimMax);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
答案 2 :(得分:-1)
使用尺寸
Dimension d=getMaximumSize(); Frame.setSize(d.width, d.height);