gpt4 book ai didi

java - 强制 JFrame 在 setResizable(false) 之后不调整大小。命令不起作用

转载 作者:行者123 更新时间:2023-12-02 04:50:00 29 4
gpt4 key购买 nike

我有一个简单的 Atari 突破程序,长话短说,我的一个功能是允许用户调整窗口大小几秒钟,然后再次使窗口不可调整大小。一切正常,窗口从不可调整大小变为可调整大小几秒钟。应该发生的情况是,几秒钟后,窗口应该停止接受用于调整窗口大小的输入(即:不应调整大小)。唯一的问题是,每当它应该设置为不可调整大小时,如果您将光标拖动到窗口上以调整其大小,它会不断调整大小。它只会在您放开窗口后激活窗口的不可调整大小状态。我的问题是,一旦计时器到了,在你放开窗口、取消调整大小的控制之前,我该如何实现这一点?

P.S:我希望编程可以在调用命令后立即阻止您调整窗口大小,而不是等待您放开鼠标。有什么建议吗?

这是一个简化的情况:(您有 6 秒的时间来调整窗口大小并使用它)

package test;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.Timer;

public class Test {

public static void main(String[] args) {
JFrame testFrame = new JFrame();
testFrame.setResizable(true);
testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
long endingTime = System.currentTimeMillis() + 6000;
Timer testTimer = new Timer(100, new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
if((endingTime - System.currentTimeMillis()) < 0){
testFrame.setResizable(false);
}
}
});
testFrame.setVisible(true);
testTimer.start();
}
}

最佳答案

我能想到的一种方法是,如果框架不可调整大小,则在调整大小事件后将大小设置回来。

但不确定它的效果如何。

frame.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
if (!frame.isResizable()) {
frame.setSize(...);
}
}
});

关于java - 强制 JFrame 在 setResizable(false) 之后不调整大小。命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29321523/

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