Как вы думаете, можно ли с помощью GridLayout создать калькулятор, который будет выглядеть так же , как стандартный калькуляторв Microsoft Windows?
К сожалению , нет, так как ячейки этого калькулятора имеют ра зные размеры – текстовоеполебольшекнопок. Носодержимоеокна можно представить спомощьюнесколькихпанелей , укоторых схемы разные.
ПрогрнаммированиеJava длядетей,родителей,бабушекдедушек
Попробуем
использовать комбинацию нескольких
схем в новом
калькуляторе. Дляэтого необходимовыполнитьследующиешаги:
Назначить BorderLayout панелифрейма ,котораябудетосновной,и вкоторойбудутсодержатьсяостальныепанели .
Добавить JTextField в северную часть, для того чтобы отображать введённыечисла.
Создатьпанель p1 с GridLayout,до бавитьнанеё20кнопоки затемпоместитьэтупанельвцентральнуюобласть основной панели.
Создатьпанель p2 с GridLayout,добавитьнанеёчетырекнопкии затемпоместитьпанель p2 вз ападнуюобласть основной панели.
Давайте начнём с более простой верси и калькулятора, которая будет выглядетьвоттак:
Создайтеновыйкласс Calculator изапуститепрограмму.Чтобыпонять , как она работает, прочитайте комментарии в примере кода, продемонстрированномниже.
import javax.swing.*;import java.awt.GridLayout;
import java.awt.BorderLayout;public class Calculator {
//Объявлениевсехкомпонентовкалькулятора.
JPanel windowContent; JTextField displayField; JButton button0;
JButton button1; JButton button2; JButton button3; JButton button4; JButton button5; JButton button6; JButton button7;
Прогрнаммирование
Java длядетей,родителей,бабушекдедушек
JButton button8;
JButton button9;
JButton buttonPoint;
JButton buttonEqual;
JPanel p1;
//Вкон структореоздаютсявсекомпоненты
//идобавляютсянафреймпокмбинациищью
// Borderlayout и Gridlayout
Calculator(){
windowContent= new JPanel();
//Задаём
схему дляэтойпанели
BorderLayout bl = new BorderLayout();
windowContent.setLayout(bl);
//Создаёмиотображаемполе
//ДобавляегоСевобластьернуюокнам
displayField = new JTextField(30);
windowContent.add("North",displayField);
//Создаёмкнописпользуя,конструктор
//класса
JButton,которыйпринимаеттекст
//кнопкивкачествепарамтра
button0=new JButton("0");
button1=new JButton("1");
button2=new JButton("2");
button3=new JButton("3");
button4=new JButton("4");
button5=new JButton("5");
button6=new JButton("6");
button7=new JButton("7");
button8=new JButton("8");
button9=new JButton("9");
buttonPoint = new JButton(".");
buttonEqual=new JButton("=");
// Создаём панель с GridLayout
//котсодержитраякнопок12
- 10кнопоксчислами
//икнопкисточкойзнакомравно
p1 = new JPanel();
GridLayout gl =new GridLayout(4,3);
p1.setLayout(gl);
//Добавляемкнопкинапанель
p1
p1.add(button1);
p1.add(button2);
p1.add(button3);
p1.add(button4);
p1.add(button5);
p1.add(button6);
p1.add(button7);
ПрогрнаммированиеJava длядетей,родителей,бабушекдедушек
p1.add(button8);
p1.add(button9);
p1.add(button0);
p1.add(buttonPoint);
p1.add(buttonEqual);
//Помещаемпанель p1вцентральнуюобластьокна windowContent.add("Center",p1);
//Создаёмфрейизадаёмегоосновнуюпанель
JFrame frame = new JFrame("Calculator"); frame.setContentPane(windowContent);
// делаем размер окна достаточным //длятого,чтобывмес компонентытить
frame.pack();
//Наконец,отображаемокно frame.setVisible(true );
}
public static void main(String[] args) {
Calculator calc = new Calculator();
}
}