2015-04-28 32 views
-1

使用setLayout(null),我可以告訴我的組件位於例如x 5和y 60.然而,這引用了窗口的x和y位置,包括邊框。JFrame絕對定位 - 使用ContentPane作爲位置參考

我可以在某種程度上告訴我的組件0,0contentPane的左上角(可見)角?

由於不同的操作系統具有不同大小的窗口邊界,所以這特別煩人。

代碼初始化JFrame中:

JFrameAdd addFrame; 
addFrame = new JFrameAdd(); 
addFrame.setVisible(true); 
addFrame.setTitle("Vokabeltrainer"); 
addFrame.setResizable(false); 
addFrame.setLocationRelativeTo(null); 
addFrame.setBounds(100, 100, 825, 585); 
addFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

內JFrameAdd.java:

JButton btnNewButton = new JButton(new ImageIcon(settingsIcon)); 
    btnNewButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      JFrameGenerated.settingsFrame.setVisible(true); 
     } 
    }); 
    btnNewButton.setBounds(0, 510, 36, 36);  
    contentPane.add(btnNewButton); 

所有的代碼是在這裏:https://github.com/MisterSkilly/Vokabeltrainer/tree/LoadSave/Latein%20asterisk/src是的,我知道我不應該同時運行兩個JFrame S,但改變這些事情搞砸了,我沒有時間去更換ATM。

+1

這不是'SSCCE',我們無法編譯和執行該代碼。 – camickr

+0

你想得到什麼結果?在一個框架內的'x = 50'和'y = 60'按鈕? – user1803551

+0

@ user1803551不,通用內容窗格(即在Mac OSX上的大小與Windows 8相同) – Skilly

回答

0

然而,到了窗口的X和Y位置這個引用,邊框包括

不,它引用的內容窗格中,其中不包括標題欄和邊框。

我可以以某種方式告訴我的組件0,0是contentPane的左上角(可見)角?

這是默認行爲。

如果您認爲您的應用程序的行爲不同,請發佈您的SSCCE來證明問題。

一般規則是不要使用空佈局。讓佈局經理擔心定位組件。

+0

現在做一些測試,需要比我想象的更長的時間。 確實看起來不錯的東西是,Eclipse的WindowBuilder在可見區域外顯示我的按鈕(http://is.gd/ZddP9P),而Windows 8把它放在那裏很好(http://is.gd/IVNs4W)I改變位置手動排列與Windows 8的佈局 – Skilly

+0

編輯:在Mac上:http://is.gd/XqZI50 EDIT2:更改setBounds(100,100,825,585)setBounds(100,100,825,555)也沒有好處: http://is.gd/4t1KNH – Skilly

+0

什麼佈局經理,你建議,仍然可以讓你把所有組件相對準確,不需要年齡轉換爲空佈局? – Skilly