2017-07-26 379 views
-3

我試圖在我的GUI中使用GridbagconstraintsLayoutManager中添加Java中的按鈕。無論座標如何,按鈕的位置始終位於中心在Java/Swing中更改按鈕位置

package StudentInfo; 
import javax.swing.*; 
import java.awt.*; 

public class Gui { 

public static void main(String[] args) { 
    JFrame frame = new JFrame(); 
    JPanel panel = new JPanel(); 

    frame.add(panel); 
    panel.setLayout(new GridBagLayout()); 
    frame.setSize(600,600); 
    frame.setVisible(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setResizable(false); 

    GridBagConstraints gbc = new GridBagConstraints(); 

    JButton b = new JButton("Hello"); 
    gbc.gridx=1; 
    gbc.gridy=1; 
    panel.add(b,gbc); 

    JButton v = new JButton("exit"); 
    gbc.gridx=1; 
    gbc.gridx=0; 
    panel.add(v,gbc); 

} 
} 

輸出

enter image description here

問題

如何定義按鈕的座標,並將其置於所需的位置?

+2

你的問題缺少一個重要的細節:你希望**放哪些按鈕。一種(非常差)的解決方案是使用空佈局和絕對定位,但是這會導致GUI只能在一個平臺上很好地工作,而且很難調試,維護和增強,所以應該避免使用。更好的解決方案是更好地定義您的需求,然後適當地使用Swing佈局管理器來最佳地定位組件。所以請再次幫助我們 - 你想要的GUI是什麼?請顯示圖像。 –

+0

除了@HovercraftFullOfEels的建議:在最小尺寸下提供ASCII圖形或簡單的*圖形佈局*,如果可以調整大小,寬度和高度更大。** –

+0

@HovercraftFullOfEels GUI I想要的是2個文本框和兩個按鈕。兩個文本字段在另一個下方,並且按鈕並排在第二個文本字段下方 – Dhaval

回答

2

您需要爲GridBagConstraints對象設置weightxweighty

除非您爲weightx或weighty指定了至少一個非零值,否則所有組件都會聚集在其容器的中心。這是因爲當權重爲0.0(默認值)時,GridBagLayout會在其網格單元格和容器邊緣之間放置任何額外的空間。 How to Use GridBagLayout

我建議您通過本教程,以及對其他Swing佈局管理器的那些讀,如果你想繼續使用Java的GUI與合作,因爲他們需要熟練的一個很好的協議,以正確使用。