import javax.swing.JFrame;
import javax.swing.SwingUtilities;
class Demo
{
JFrame jf;
Demo()
{
jf=new JFrame("Demo");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(5000,5000);
jf.setVisible(true);
System.out.println(jf.getSize());
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new Demo();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
我jf.setSize(5000, 5000)用于JFrame,但之后getSize返回其他大小:( java.awt.Dimension[width=1386,height=788]我的屏幕分辨率是1366x768)我可以设置大于屏幕大小的帧大小吗?可能这样的行为提供了一些框架属性,但我不知道它们.
javadoc说:
"该方法会更改与几何相关的数据.因此,本机窗口系统可能会忽略此类请求,或者它可能会修改所请求的数据,以便以与桌面设置密切对应的方式放置和调整Window对象的大小."
这涵盖了您正在观察/抱怨的行为.
它不是很清楚,但有一个原因Window.setSize(...)就是窗口管理器(Java之外)通常会否决应用程序尝试执行此操作.据推测,这是因为它是滥用和"不是用户想要的".无论如何,最终不是您的应用程序调用覆盖窗口管理器的限制.
只是为了星期五的乐趣(也就是说,您不应该在生产环境中考虑做任何事:-)-与@jinguy代码一起玩得更远,我注意到在最小化框架之后使用了大于寿命的大小。通过编程方式使其从一开始就显示为怪物
jf.setPreferredSize(new Dimension(5000,5000));
jf.setMinimumSize(new Dimension(5000,5000));
jf.pack();
jf.setVisible(true);
jf.setState(Frame.ICONIFIED);
jf.setState(Frame.NORMAL);
System.out.println(jf.getSize());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15429 次 |
| 最近记录: |