此问题讨论了JFrame扩展到Windows任务栏的已知错误. 答案链接到错误报告(具有各种重复项)并提供解决方法.我发现问题也适用于JDialogs.JFrame解决方法不适用.是否有类似的解决方法使JDialogs在Windows上表现自己?
示例代码:
import javax.swing.*;
public class Demo extends JDialog {
public Demo() {
setSize(250,12500);
setVisible(true);
}
public static void main(String[] args) {
new Demo();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
看起来这不会在JDK中修复. 此错误报告以"如果开发人员想要在屏幕上完全显示其窗口,他们应该考虑检查屏幕插图本身[如下面的解决方案] "并以不同方式重新布局其组件的评论结束.在调用pack()之后手动重新调整窗口大小,或者使用支持screen-insets的布局管理器[与BorderLayout和GridBagLayout等更常见的布局管理器不同].
我需要有一个未修饰的JFrame(setUndecorated(true)),需要全屏显示,而不与任务栏重叠.
我尝试了以下解决方案.
调用setExtendedState(MAXIMIZED_BOTH).
尝试使用JFrame.setExtendedState(MAXIMIZED_BOTH)与未修饰帧一起工作的下述解决方案?
GraphicsConfiguration config = aFrame.getGraphicsConfiguration();
Rectangle usableBounds = SunGraphicsEnvironment.getUsableBounds(config.getDevice());
aFrame.setBounds(0, 0, usableBounds.width, usableBounds.height);
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
我想到了一个设计.但不确定其可行性.我可以使用setBounds().但是,当调整任务栏或重新定位任务栏时,我需要通知我的框架.有办法吗?