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();
}
}
感谢您的快速响应。 –
@ColmOS如果它解决了您的问题,请标记为正确答案。 – airowe
对不起,在那里的电话分心。我想要输入按钮垂直占用两个空间,所以使用cNums.gridheight = 2但没有区别。重量与gridbagconstraints.RELATIVE使底部行高度更小。也许我的方法有可调整大小的按钮是错误的? –