gpt4 book ai didi

java - 未修饰的 JFrame 显示不需要的图标

转载 作者:行者123 更新时间:2023-12-01 18:43:05 25 4
gpt4 key购买 nike

我编写了一个像这样的简单程序:

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("MyFirstJavaProgram");
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setUndecorated(true);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}

当框架最小化(通过单击任务栏中的图标)然后恢复时,它会显示不需要的图标,例如标题栏图标(关闭图标、最小化和最大化),然后显示未修饰的 JFrame。

这是我的问题的视频:http://www.mediafire.com/file/k2uzd0b8uupd1h9/Video.mp4/file您可以看到左上角的图标闪烁很短的时间,然后消失。

这是一个错误吗?我怎么解决这个问题?我使用的是 JDK 13,操作系统是 Win8.1

最佳答案

我认为这可以解决您的问题。我创建了一个窗口监听器来监 window 口是否未最小化。然后我将窗口设置为不可见几毫秒,然后将其重置为可见。如果它不起作用,您可能需要将该值提高到 Thread.sleep()

    public static void main(String[] args) {
SwingUtilities
.invokeLater(() -> new Testit().start()); // starts on the EDT.
}

public void start() {
JFrame frame = new JFrame();
frame.setSize(400, 400);
frame.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
frame.setUndecorated(true);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.addWindowListener(
new MyWindowListener(frame));

}

private class MyWindowListener extends WindowAdapter {
JFrame frame;

public MyWindowListener(JFrame frame) {
this.frame = frame;
}

@Override
public void windowDeiconified(WindowEvent we) {
frame.setVisible(false);
try {
Thread.sleep(10);
} catch (InterruptedException ie) {
}
frame.setVisible(true);
}

}
}

关于java - 未修饰的 JFrame 显示不需要的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59881432/

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