gpt4 book ai didi

java setResizable(false) 改变窗口大小(swing)

转载 作者:太空狗 更新时间:2023-10-29 22:45:47 24 4
gpt4 key购买 nike

我有一个奇怪的问题。我正在为窗口使用空布局(= JFrame 和在窗口上),如果我使用 setResizable (false),窗口大小会变大(向右和底部,我会说大约 10 像素)。我不知道为什么。

两个 println 返回相同的大小,奇怪的是,还...

mainWnd.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainWnd.setTitle(wndTitle);
mainWnd.setBounds(wndPosX, wndPosY, wndWidth, wndHeight);
System.out.println(mainWnd.getHeight() + mainWnd.getWidth());
mainWnd.setResizable(false);
System.out.println(mainWnd.getHeight() + mainWnd.getWidth());

有人有想法吗?为什么窗口会调整大小?

更新:此处相同(使用和不使用 setResizable 进行编译,如果窗口重叠,您可以看到它):

import javax.swing.JFrame;
import javax.swing.JPanel;


public class Main
{
private static JFrame mainWnd = null;

public static void main(String[] args)
{
mainWnd = new JFrame();

mainWnd.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainWnd.setTitle("asda");
mainWnd.setBounds(50, 50, 300, 300);

mainWnd.setResizable(false);

mainWnd.setVisible(true);
}
}

最佳答案

它在我的例子中没有改变,所以你必须有其他原因导致你的问题:

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Test4 {

protected static void initUI() {
JFrame frame = new JFrame("test");
frame.setBounds(0, 0, 300, 200);
frame.setVisible(true);
System.err.println(frame.getSize());
frame.setResizable(false);
System.err.println(frame.getSize());
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
initUI();
}
});
}
}

编辑/更新:

当您将可调整大小设置为 false(至少在 Windows 7 和 JDK 6 上)时,以某种方式插入不正确。不知何故,它们从 30、8、8、8 变为 25、3、3、3,尽管边界(由操作系统绘制)实际上保持不变。由于插图是框架边界的一部分,因此在无法调整大小时,框架实际上(在视觉上)太大了。对我来说,当框架不可调整大小时,计算的插图中似乎存在错误。

关于java setResizable(false) 改变窗口大小(swing),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11225144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com