Я пытаюсь создать calculator
в java
. Я новичок в Layout Managers
. Я создал объект JFrame
с GridBagLayout
. Я создал 2 JPanel
, один для чисел, а другой для операций. И JPanel
используют GridLayout
.JPanel занимает дополнительный регион
Так они расположены в JFrame
.
window=new JFrame("Calculator");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLayout(new GridBagLayout());
//Creating window
GridBagConstraints gbc=new GridBagConstraints();
btns=new JPanel(); //JPanel for numbers
operations=new JPanel(); //JPanel for operations
numdisp=new JTextField(15); //JTextFIeld which displays the number
gbc.gridx=1;
gbc.gridy=1;
window.add(numdisp,gbc);
addbtn(); //method which defines all the variables
gbc.gridx=1;
gbc.gridy=2;
window.add(btns,gbc);
gbc.gridx=2;
gbc.gridy=2;
window.add(operations,gbc);
btns.setLayout(new GridLayout(4,3,0,0)); //Layout for both JPanel's
operations.setLayout(new GridLayout(7,1,1,1));
window.pack();
window.setVisible(true);
Но это, как результат выглядит ...
Я не понимаю, почему существует большой разрыв между моей number
панелью и number display
. Почему возникает проблема? Как это можно решить?
1) Чтобы лучше помочь, отправьте сообщение [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). 2) См. Также этот [пример калькулятора] (http://stackoverflow.com/a/7441804/418556). Он использует 'ScriptEngine' для оценки выражения в текстовом поле. 3) См. Также ['GridBagConstraints.fill'] (http://docs.oracle.com/javase/8/docs/api/java/awt/GridBagConstraints.html#fill). –