Java 多监视器的Swing参数
我买了并安装了第二台显示器。 当我打开eclipse并将其拖到第二个监视器上时,如果我运行swing应用程序,它们会出现在第一个监视器上Java 多监视器的Swing参数,java,swing,autoscaling,multiple-monitors,Java,Swing,Autoscaling,Multiple Monitors,我买了并安装了第二台显示器。 当我打开eclipse并将其拖到第二个监视器上时,如果我运行swing应用程序,它们会出现在第一个监视器上 是否有swing参数使程序在第二个监视器上运行,或者至少在运行eclipse的监视器上运行 如果我将swing程序从第一个监视器移动到第二个监视器,它将变为黑色。为什么呢 其他信息: 我的驱动程序和eclipse都是最新的 显示器1:笔记本电脑集成显示器,QHD,17'。所有的东西都可以放大,包括秋千。由集成英特尔图形处理>>(由Windows决定,此项不能更
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class test {
public static void main(String[] args){
new test();
}
public test(){
JFrame testingBlack = new JFrame("MCVe");
JPantest testingB = new JPantest();
testingBlack.add(testingB);
testingBlack.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
testingBlack.setVisible(true);
}
private class JPantest extends JPanel{
public JPantest(){
super();
repaint();
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.drawLine(0, 0, 100, 100);
}
}
}
这个程序画了一条简单的线。我从ecplise运行它,它从第一个监视器打开,一切正常。我拖动第二个显示器,它会变成黑色
是否有swing参数使程序在第二个监视器上运行,或者至少在运行eclipse的监视器上运行
IDE的位置无关紧要。任何无父窗口都将在屏幕的(0,0)
坐标处初始化,该坐标相当于GraphicsEnvironment\getDefaultScreenDevice()
返回的坐标。您可以使用setLocationByPlatform
允许窗口系统(OS)确定位置。如果要强制设置第二个监视器的位置,可以执行以下操作:
public Main() {
JFrame testingBlack = new JFrame("MCVe");
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gds = ge.getScreenDevices();
GraphicsConfiguration gc = gds[1].getDefaultConfiguration();
Rectangle rect = gc.getBounds();
testingBlack.setLocation(rect.getLocation());
// or, if you like this style better
testingBlack.setLocation(GraphicsEnvironment
.getLocalGraphicsEnvironment()
.getScreenDevices()[1]
.getDefaultConfiguration()
.getBounds()
.getLocation());
testingBlack.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
testingBlack.setVisible(true);
}
只需确保您在图形设备[]
中访问了正确的设备,以避免AIOOB异常。[0]
上的那个应该是默认设备(尽管我认为没有这样的保证)
如果我将swing程序从第一个监视器移动到第二个监视器,它将变为黑色。为什么呢
不知道。必须与您的显示器设置有关。“它变黑”为了更快地获得更好的帮助,请发布或。是否只有Swing应用程序变黑?另外,你说的缩放是什么?如果这个问题解决了,请接受答案(投票旁边的绿色复选标记)。设备启动后不会自动调用repaint()(用于自定义绘制)switched@mKorbel很有可能,为什么会发生这种情况?似乎API中的实现不接受多个设备(适用于定制绘画),可能是bug、功能、遗忘,或