gpt4 book ai didi

Java - 使用 Synthetica Look and Feel (LAF) 和多显示器最大化窗口

转载 作者:行者123 更新时间:2023-11-30 11:00:58 26 4
gpt4 key购买 nike

我在使用 Java 1.7 的应用程序中使用 Synthetica Black Eye LAF ( http://www.jyloo.com/synthetica/)。似乎当我启用 Synthetica LAF 时,如果我将屏幕拖到更大的第二台显示器上,然后通过双击或单击最大化图标来最大化窗口,该窗口占用的空间与主监视器上的“全屏”大小。当我没有启用 LAF 时,它不会执行此操作。就好像它没有意识到它在哪个屏幕上的尺寸。有什么解决方法吗?

我已经有效地做到了这一点: Java Toolkit Getting Second screen sizejava & fullscreen over multiple monitors这很好,因为现在我可以将首选尺寸设置为较大显示器的尺寸,但这对我的最大化问题没有帮助。

这是我的代码:

package mil.innovation.bewear.maintenance.windows;

import de.javasoft.plaf.synthetica.SyntheticaBlackEyeLookAndFeel;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class Windows {

public static void main(String[] args) {
try {
UIManager.setLookAndFeel(new SyntheticaBlackEyeLookAndFeel());
} catch (Exception e) {
System.out.println("Look and feel not started");
}

Dimension dimension;

GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] devices = graphicsEnvironment.getScreenDevices();
GraphicsDevice biggest;
if (devices.length > 1) {
biggest = devices[0];
for (GraphicsDevice device : devices) {
if (device.getDefaultConfiguration().getBounds().getSize().getWidth() > biggest.getDefaultConfiguration().getBounds().getSize().getWidth())
biggest = device;
}
dimension = biggest.getDefaultConfiguration().getBounds().getSize();
} else if (devices.length == 1)
dimension = devices[0].getDefaultConfiguration().getBounds().getSize();
else {
throw new RuntimeException("No Screens detected");
}

String filePath = "C:\\Users\\Bewear2\\IdeaProjects\\bewear_windows\\imgNotFound.png";
JFrame frame = new JFrame("Example");
JLabel lblPicture = new JLabel();
lblPicture.setPreferredSize(dimension);
lblPicture.setSize(dimension);
BufferedImage image;
try {
image = ImageIO.read(new File("imgNotFound.png"));
lblPicture.setIcon(new ImageIcon(image));
}catch (IOException ex) {
System.out.println("Error loading the picture that is supposed to load when loading a picture fails" + ex);
}
try {
image = ImageIO.read(new File(filePath));
Image bufferedImg = image.getScaledInstance(lblPicture.getWidth(), lblPicture.getHeight(), Image.SCALE_SMOOTH);
lblPicture.setIcon(new ImageIcon(bufferedImg));
} catch (IOException ex) {
System.out.println("Error loading picture " + ex);
}
frame.setContentPane(lblPicture);
frame.pack();
frame.setVisible(true);
}

最佳答案

来自客户支持的电子邮件:

这主要是多屏环境中的一个已知 Java Swing 问题,只有在使用不同的屏幕分辨率时才会发生 - 请参阅 http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6829250 .它的目标是在 V9 中修复。但是,还有另一个问题 (#7010721 http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7010721) 会影响窗口大小,因此请确保使用最新的 JVM。如果问题仍然存在,一个可能的解决方法是启用 native 框架装饰(请参阅 FAQ Window Decoration #1 http://www.jyloo.com/synthetica/faq/#windowDecoration-1)另一个解决方法是将系统属性“synthetica.frame.fullscreen”设置为 true,但这将覆盖任务栏操作系统。

关于Java - 使用 Synthetica Look and Feel (LAF) 和多显示器最大化窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31374187/

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