当前位置: 首页 > 面试题库 >

Java setResizable(false)更改窗口大小(摆动)

颛孙沈义
2023-03-14
问题内容

我有一个奇怪的问题。我正在为窗口使用null布局(=
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。由于插图是框架边界的一部分,因此在无法调整大小时,框架实际上(在视觉上)太大。对我来说,当帧无法调整大小时,似乎在计算的插入量中存在错误。



 类似资料:
  • 我不能做的是找到一种方法来改变Vbox的尺寸(绿色段),然后根据窗口的大小改变按钮(橙色段)。(当用户使用窗口大小时) 我更喜欢找到一种方法将参数设置到我的css文件中,或者作为最后的手段在我的FXML中。 .css文件:

  • 问题内容: 我正在寻找一种观察窗口内部宽度大小变化的方法。我尝试了以下操作,但没有成功: 有什么建议? 问题答案: 我们可以使用jQuery来做到这一点: 请注意,将事件处理程序绑定在可以 重新创建的 范围内(例如ng- repeat范围,指令范围等)时,在销毁该范围时应取消绑定事件处理程序。如果不执行此操作,则每次重新创建作用域(重新运行控制器)时,都会再添加1个处理程序,从而导致意外行为和泄漏

  • 我有一个流是消费的Flink Kafka消费者将加入另一个流为定义的窗口大小,如Time.milliseconds(10000)。 如何在运行时将窗口大小更改为Time.milliseconds(20000)?

  • 问题内容: 因此,关于使用Capybara和RSpec进行集成测试,我知道我可以这样做: 如何设置浏览器窗口大小的Rspec的(selenium)为特定的RSpec的测试,但有没有办法做到这一点在全球范围使每一个被媒体查询测试的影响没有定义呢? 问题答案: 您可以在下定义

  • 窗口大小,我们可以非常方便的使用width、height调整,但是如何知道 width和height是一个问题? 在 Window 操作系统中,假如我们想要缩放,我们通常会把鼠标移动到窗口的右边栏,和底部边栏,以及右下边栏。 而且在不同的边栏,鼠标呈现的样式也是不一样的。当我们在右边栏的时候我们可以通过cursor: e-resize;模拟鼠标样式。 在底部边栏我们可以通过cursor: s-re

  • #include <stdio.h> void fun1(void) { int i = 0; i++; i = i * 2; printf("%d\n", i); } void fun2(void) { int j = 0; fun1(); j++; j = j