java awt setLocationRelativeTo with multiple monitors p

时间:2012-11-29 17:26:51

标签: java awt

我有一个按钮点击最大化的Jpanel。我通过将维度设置为屏幕大小然后调用setLocationRelativeTo(null)来实现。如果我在主监视器中有面板,这可以正常工作,但当面板在其他监视器上时,单击按钮总是使面板移动到主监视器。有没有办法获得当前使用的面板监视器,并使用相同的新位置。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我家里只有一个屏幕,并且将在星期一回到我的工作,但是下面的代码在Windows 7 64位下将JFrame的标题设置为“\ Display0”。我想这个字符串是屏幕的ID,第二个屏幕名为“\ Display1”。

我建议在多屏PC上运行此应用程序来评估它。

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Frm
   extends
      JFrame
   implements
      ActionListener
{
   Frm()
   {
      setDefaultCloseOperation( EXIT_ON_CLOSE );
      setPreferredSize( new Dimension( 640, 480 ));
      setLayout( new BorderLayout());
      JButton getScreenBtn = new JButton( "Get Screen ID" );
      add( getScreenBtn, BorderLayout.CENTER );
      getScreenBtn.addActionListener( this );
      pack();
      setLocationRelativeTo( null );
      setVisible( true );
   }

   @Override
   public void actionPerformed( ActionEvent e ) {
      setTitle( getGraphicsConfiguration().getDevice().getIDstring());
   }

   public static void main( String[] args ) {
      SwingUtilities.invokeLater( new Runnable() {
         @Override public void run() { new Frm(); }});
   }
}