2015-08-08 63 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使底部行高度更小。也许我的方法有可调整大小的按钮是错误的? –