我有两台显示器
我编写了非常小的 Swing Java 代码来收集所有屏幕设备的信息,通过在控制面板中设置显示来改变显示模式和一个或两个显示屏幕。和如下代码:
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
final JFrame frame = new JFrame("Demo get info screen devices");
JButton button = new JButton("Print info screen devices");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
printInfoAllScreenDevices();
}
});
frame.add(button);
frame.setSize(500, 300);
frame.setVisible(true);
}
private static void printInfoAllScreenDevices() {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] graphicsDevices = ge.getScreenDevices();
System.out.println("Number of screen devices:" + graphicsDevices.length);
}
}
首先,我用两个屏幕启动程序,然后单击按钮(“打印信息屏幕设备”)。在输出显示
Number of screen devices:2
正确的!
接下来我更改为一种显示模式。最后,再次单击按钮,结果仍然是 2。实际上只有 1 个屏幕设备。
我检查 GraphicsEnvironment.getLocalGraphicsEnvironment() 创建一个像单例这样的实例。意思是不能更新?还有一件事,我不想关闭程序并再次打开。
我怎样才能获得像这种情况下的屏幕设备的正确信息?
而且我还希望Java决定哪个类(扩展GraphicsEnvironment)提供屏幕设备的信息,取决于操作系统。
感谢您的提前!