【问题标题】:java awt setLocationRelativeTo with multiple monitors pjava awt setLocationRelativeTo 与多个监视器 p
【发布时间】:2012-11-29 17:26:50
【问题描述】:

我有 Jpanel,它在单击按钮时最大化。我通过将尺寸设置为屏幕大小然后调用 setLocationRelativeTo(null) 来做到这一点。如果我在主监视器中有面板,这很好用,但是当面板在其他监视器上时,单击按钮总是使面板移动到主监视器。有没有办法获取当前使用的面板监视器并将其用于新位置。提前致谢。

【问题讨论】:

  • 嗨,我已经看到了这个链接,在我的情况下,如果面板已经在主监视器中,则没有问题,因为单击按钮会将窗口移动到主监视器。更清楚地说,我想识别面板当前所在的监视器,用户可以在监视器之间移动它。我想找到当前窗口所在的监视器并将新位置也设置为相同。如何使用 GraphicsConfiguration 来做到这一点?我无法从 Javadocs 中弄清楚。
  • stackoverflow.com/questions/1248386/… 按照上面的帖子有帮助

标签: java awt


【解决方案1】:

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

我建议在多屏电脑上运行这个应用程序来评估它。

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(); }});
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-03
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多