2015-08-08 43 views
0

我想爲使用網格佈局的銷售點構建一個簡單的界面。POS的網格佈局

我希望能實現一個按比例調整按鈕的佈局,但不能讓按鈕佔用多個空間。數字鍵盤上的Enter按鈕應該更大並且垂直佔據剩餘的空間。請幫忙。以下是我的代碼。

public class Tillview2 { 

private JButton b0; 
private JButton b1; 
private JButton b2; 
private JButton b3; 
private JButton b4; 
private JButton b5; 
private JButton b6; 
private JButton b7; 
private JButton b8; 
private JButton b9; 
private JButton b00; 
private JButton bdot; 
private JButton bclear; 
private JButton bbacksp; 
private JButton bent; 


public void init() { 

    JFrame mainFrame = new JFrame("Point Of Sale - Till"); 

    GridBagLayout gridbag = new GridBagLayout(); 
    GridBagConstraints c = new GridBagConstraints(); 

    mainFrame.setLayout(gridbag); 

    c.fill = GridBagConstraints.BOTH; 
    c.weightx = 1.0; 
    c.weighty = 1.0; 


    JPanel itemListPanel = new JPanel(); 
    JPanel categoryPanel = new JPanel(); 
    JPanel numbersPanel = new JPanel(); 
    JPanel hotkeyPanel = new JPanel(); 

    c.fill = GridBagConstraints.BOTH; 
    gridbag.setConstraints(itemListPanel, c); 
    mainFrame.add(itemListPanel); 
    JButton itemList = new JButton("Item List"); /// <-------TEMP 
    itemListPanel.add(itemList); 
    c.gridwidth = GridBagConstraints.REMAINDER; 
    gridbag.setConstraints(categoryPanel, c); 
    mainFrame.add(categoryPanel); 
    JButton categorys = new JButton("Categorys"); /// <------TEMP 
    categoryPanel.add(categorys); 
    c.gridwidth = GridBagConstraints.BOTH; 
    gridbag.setConstraints(numbersPanel, c); 
    mainFrame.add(numbersPanel); 
    gridbag.setConstraints(hotkeyPanel, c); 
    mainFrame.add(hotkeyPanel); 
    JButton hotkey = new JButton("Hoy keys"); /// <------ TEMP 
    hotkeyPanel.add(hotkey); 

創建numbersPanel

b0 = new JButton("0"); 
    b1 = new JButton("1"); 
    b2 = new JButton("2"); 
    b3 = new JButton("3"); 
    b4 = new JButton("4"); 
    b5 = new JButton("5"); 
    b6 = new JButton("6"); 
    b7 = new JButton("7"); 
    b8 = new JButton("8"); 
    b9 = new JButton("9"); 
    b00 = new JButton("00"); 
    bdot = new JButton("."); 
    bclear = new JButton("C"); 
    bbacksp = new JButton("Bsp"); 
    bent = new JButton("Ent"); 


    GridBagLayout gbNums = new GridBagLayout(); 
    GridBagConstraints cNums = new GridBagConstraints(); 

    cNums.fill = GridBagConstraints.BOTH; 

    numbersPanel.setLayout(gbNums); 
    cNums.weightx = 1.0; 
    cNums.weighty = 1.0; 

    cNums.fill = GridBagConstraints.BOTH; 
    gbNums.setConstraints(b7, cNums); 
    numbersPanel.add(b7); 
    gbNums.setConstraints(b8, cNums); 
    numbersPanel.add(b8); 
    gbNums.setConstraints(b9, cNums); 
    numbersPanel.add(b9); 
    cNums.gridwidth = GridBagConstraints.REMAINDER; 
    gbNums.setConstraints(bbacksp, cNums); 
    numbersPanel.add(bbacksp); 

    cNums.gridwidth = GridBagConstraints.BOTH; 
    gbNums.setConstraints(b4, cNums); 
    numbersPanel.add(b4); 
    gbNums.setConstraints(b5, cNums); 
    numbersPanel.add(b5); 
    gbNums.setConstraints(b6, cNums); 
    numbersPanel.add(b6); 
    cNums.gridwidth = GridBagConstraints.REMAINDER; 
    gbNums.setConstraints(bclear, cNums); 
    numbersPanel.add(bclear); 

    cNums.gridwidth = GridBagConstraints.BOTH; 
    gbNums.setConstraints(b1, cNums); 
    numbersPanel.add(b1); 
    gbNums.setConstraints(b2, cNums); 
    numbersPanel.add(b2); 
    gbNums.setConstraints(b3, cNums); 
    numbersPanel.add(b3); 

    cNums.gridwidth = GridBagConstraints.REMAINDER; 
    cNums.gridheight = 2; 
    gbNums.setConstraints(bent, cNums); 
    numbersPanel.add(bent); 


    cNums.gridwidth = GridBagConstraints.BOTH; 
    gbNums.setConstraints(b0, cNums); 
    numbersPanel.add(b0); 
    gbNums.setConstraints(bdot, cNums); 
    numbersPanel.add(bdot); 
    //cNums.gridwidth = GridBagConstraints.RELATIVE; 
    gbNums.setConstraints(b00, cNums); 
    numbersPanel.add(b00); 


    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    mainFrame.setSize(600, 400); 
    mainFrame.setVisible(true); 
} 

public static void main(String args[]) { 

    Tillview2 ex1 = new Tillview2(); 
    ex1.init(); 
} 
} 

回答

0

設置gridwidth如果你有一個絕對的列數爲輸入按鈕佔用或使用的weightx約束佔用的空間相對量在行。

How to use GridBagLayout

+0

感謝您的快速響應。 –

+0

@ColmOS如果它解決了您的問題,請標記爲正確答案。 – airowe

+0

對不起,在那裏的電話分心。我想要輸入按鈕垂直佔用兩個空間,所以使用cNums.gridheight = 2但沒有區別。重量與gridbagconstraints.RELATIVE使底部行高度更小。也許我的方法有可調整大小的按鈕是錯誤的? –