java 界面大小不可变_Java setResizable(false)改变窗口大小(swing)

我有一个奇怪的问题.我正在使用窗口的null布局(= JFrame和Windows),如果我使用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();

}

});

}

}

编辑/ UPDATE:

将resizable设置为false时,不知何故插入不正确(至少在Windows 7和JDK 6上).不知何故,它们从30,8,8,8变为25,3,3,3,尽管边界(由操作系统绘制)实际上保持不变.由于insets是Frame的边界的一部分,因此当它不可调整大小时,框架实际上太大(视觉上).对我来说,当帧不可调整大小时,计算的insets中存在一个错误.

标签:java,swing,window

来源: https://codeday.me/bug/20190928/1828776.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值