【发布时间】:2016-11-07 06:53:15
【问题描述】:
我使用 GridLayout 方法在 java 中编写了一个计算器。我没有考虑这样一个事实,即无法设置不同大小的按钮。因此,我试图找到一种解决方法,因为我无法弄清楚如何在我的代码中实现 GridBagLayout。
目前我的代码结果如下所示: My current JFrame Design
但是,我试图让它看起来像这样: How I want the design to look
public static void main(String[] args){
JFrame frame = new JFrame("Calculator");
Container content = frame.getContentPane();
ActionListener AL = new Calculator();
content.setLayout((new BorderLayout()));
JPanel panel1 = new JPanel(new BorderLayout());
panel1.add(new JLabel("CSC 20 Lab 08", JLabel.CENTER), BorderLayout.NORTH);
text = new JTextField("0.");
text.addActionListener(AL);
panel1.add( text, BorderLayout.SOUTH);
text.setHorizontalAlignment(JTextField.RIGHT);
content.add(panel1, BorderLayout.NORTH);
JPanel panel2 = new JPanel(new GridLayout(4, 5));
for (int i=1; i < 8; i = i + 3){
...adding numerical button in panel2...
...adding more buttons in panel2...
}
JPanel panel2b = new JPanel(new GridLayout(1, 2));
clearButton = new JButton("C");
panel2b.add(clearButton);
gridbag.setConstraints(clearButton, c);
...add "clear" functionality...
panel2.add(panel2b);
...adding more buttons in panel2...
content.add(panel2, BorderLayout.CENTER);
JPanel panel3 = new JPanel(new GridLayout(1, 3));
equalButton = new JButton("=");
panel3.add(equalButton);
equalButton.addActionListener(AL);
content.add(panel3, BorderLayout.SOUTH);
... more code
我怎样才能最轻松地实现它来更改“C”按钮的大小?
【问题讨论】:
-
改用
GridBagLayout。它允许一个单元格跨越多行或多列。 “我无法弄清楚如何在我的代码中实现 GridBagLayout。” 好吧.. 最好准确描述问题所在,因为它是正确的布局。 -
这是一个使用 GridBagLayout 作为计算器类型的示例,您可以将其作为起点:stackoverflow.com/a/39235219/2180785
标签: java swing layout-manager grid-layout flowlayout