2012-11-29 45 views
0

我有Jpanel,它是最大化的按鈕單擊。我通過將尺寸設置爲屏幕尺寸然後調用setLocationRelativeTo(null)來實現。這工作正常,如果我在主監視器中的面板,但當面板在其他監視器上按鈕單擊總是使面板移動到主監視器。有沒有辦法獲得面板的當前使用的監視器,並使用相同的新位置。提前致謝。java awt setLocationRelativeTo與多個監視器p

+1

http://stackoverflow.com/questions/10888131/determine-windows-display-number-and-or-layout-via-java – Aubin

+0

嗨, 我已經看到了這個鏈接,在我的情況有因爲按鈕點擊將窗口移動到主監視器,所以如果面板已經在主監視器中,則不存在問題。爲了更清楚,我想識別面板當前的顯示器,用戶可以在顯示器之間移動它。我想找到當前窗口在哪個監視器中,並將新位置也設置爲相同。如何使用GraphicsConfiguration完成這項工作?我無法從Javadocs中找到它。 – vumaasha

+0

http://stackoverflow.com/questions/1248386/how-do-i-determine-which-monitor-a-swing-mouse-event-occurs-in 繼上面的線程幫助 – user111093

回答

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