import javax.swing.*;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.awt.Component;
public class Calculator {
// объявление всех компонентов калькулятора
JPanel windowContent; // контейнер панели
//JTextField displayField; // поле отображения цифр
JFormattedTextField displayField; // форматируемое поле отображения цифр
JButton[] numButtons; // кнопки с 0 по 9
JButton buttonPoint; // кнопка "."
JButton buttonEqual; // кнопка "="
JButton buttonPlus; // кнопка "+"
JButton buttonMinus; // кнопка "-"
JButton buttonSlash; // кнопка "/"
JButton buttonStar; // кнопка "*"
JPanel p1; // левая панель с цифровыми кнопками
JPanel p2; // правая панель
// в конструкторе создаются все компоненты
// и добавляются на фрейм с помощью комбинации
// BorderLayout и GridLayout
Calculator () {
windowContent = new JPanel();
// задаем схему для этой панели
BorderLayout bl = new BorderLayout();
windowContent.setLayout(bl);
//создаем и отображаем поле
// добавляем его в Северную область экрана
//numPeriodsField = new JFormattedTextField();
// numPeriodsField.setValue(new Integer(numPeriods));
// numPeriodsField.setColumns(10);
// displayField = new JTextField(30);
displayField = new JFormattedTextField();
displayField.setColumns(30);
displayField.setHorizontalAlignment(SwingConstants.RIGHT);
windowContent.add("North",displayField);
//создаем кнопки, используя конструктор
// класс JButton , который принимает текст
//кнопки в качестве параметра
//Buttons numButton [] = new Buttons [10];
//numButtons = new Buttons[10];
// JButton numButtons [] = new JButton [10];
//
//int s = numButtons.length;
numButtons = new JButton[9];
for (int i=0; i<=9;i++){
numButtons[i] = new JButton();
p1.add(numButtons[i]);
}
buttonPoint=new JButton(".");
buttonEqual=new JButton("=");
buttonPlus=new JButton("+");
buttonMinus=new JButton("-");
buttonSlash=new JButton("/");
buttonStar=new JButton("*");
// Создаём панель с GridLayout
// которая содержит 12 кнопок - 10 кнопок с числами
// и кнопки с точкой и знаком равно
p1 = new JPanel();
GridLayout gl =new GridLayout(4,3);
p1.setLayout(gl);
// добавляем кнопки на панель pl
p1.add(buttonPoint);
p1.add(buttonEqual);
//помещаем панель pl в центральную область окна
windowContent.add("Center",p1);
//создаем панель с GridLayout
//которая содержит 4 кнопок
p2 = new JPanel();
gl = new GridLayout(4,1);
p2.setLayout(gl);
// добавляем кнопки на панель pl
p2.add(buttonPlus);
p2.add(buttonMinus);
p2.add(buttonSlash);
p2.add(buttonStar);
//помещаем панель p2 в центральную область окна
windowContent.add("East",p2);
// создаем фрейм и задаем основную панель
JFrame frame = new JFrame("Calculator");
frame.setContentPane(windowContent);
// делаем размер окна достаточным
// для того чтобы вместить все компоненты
frame.pack();
//отображаем окно (делаем окно видимым)
frame.setVisible(true);
}
public static void main (String args[]){
Calculator calc = new Calculator();
}
}
Вы создаете панель после строк, в которых добавляете в нее кнопки.
переместите создание панели выше, над добавлением в нее кнопок + у Вас не верное условие в цикле i <= 9
, оно вызывает IndexOutOfBoundsException
, лучше написать i<numButtons.length
p1 = new JPanel();
numButtons = new JButton[9];
...
for (int i=0; i<numButtons ;i++) {
numButtons[i] = new JButton();
p1.add(numButtons[i]);
}
Вот код целиком:
import javax.swing.*;
import java.awt.*;
public class Calculator {
// объявление всех компонентов калькулятора
JPanel windowContent; // контейнер панели
//JTextField displayField; // поле отображения цифр
JFormattedTextField displayField; // форматируемое поле отображения цифр
JButton[] numButtons; // кнопки с 0 по 9
JButton buttonPoint; // кнопка "."
JButton buttonEqual; // кнопка "="
JButton buttonPlus; // кнопка "+"
JButton buttonMinus; // кнопка "-"
JButton buttonSlash; // кнопка "/"
JButton buttonStar; // кнопка "*"
JPanel p1; // левая панель с цифровыми кнопками
JPanel p2; // правая панель
// в конструкторе создаются все компоненты
// и добавляются на фрейм с помощью комбинации
// BorderLayout и GridLayout
Calculator () {
windowContent = new JPanel();
// задаем схему для этой панели
BorderLayout bl = new BorderLayout();
windowContent.setLayout(bl);
//создаем и отображаем поле
// добавляем его в Северную область экрана
//numPeriodsField = new JFormattedTextField();
// numPeriodsField.setValue(new Integer(numPeriods));
// numPeriodsField.setColumns(10);
// displayField = new JTextField(30);
displayField = new JFormattedTextField();
displayField.setColumns(30);
displayField.setHorizontalAlignment(SwingConstants.RIGHT);
windowContent.add("North",displayField);
//создаем кнопки, используя конструктор
// класс JButton , который принимает текст
//кнопки в качестве параметра
//Buttons numButton [] = new Buttons [10];
//numButtons = new Buttons[10];
// JButton numButtons [] = new JButton [10];
//
//int s = numButtons.length;
// Создаём панель с GridLayout
// которая содержит 12 кнопок - 10 кнопок с числами
// и кнопки с точкой и знаком равно
p1 = new JPanel();
GridLayout gl =new GridLayout(4,3);
p1.setLayout(gl);
numButtons = new JButton[9];
for (int i=0; i<numButtons; i++){
numButtons[i] = new JButton();
p1.add(numButtons[i]);
}
buttonPoint=new JButton(".");
buttonEqual=new JButton("=");
buttonPlus=new JButton("+");
buttonMinus=new JButton("-");
buttonSlash=new JButton("/");
buttonStar=new JButton("*");
// добавляем кнопки на панель pl
p1.add(buttonPoint);
p1.add(buttonEqual);
//помещаем панель pl в центральную область окна
windowContent.add("Center",p1);
//создаем панель с GridLayout
//которая содержит 4 кнопок
p2 = new JPanel();
gl = new GridLayout(4,1);
p2.setLayout(gl);
// добавляем кнопки на панель pl
p2.add(buttonPlus);
p2.add(buttonMinus);
p2.add(buttonSlash);
p2.add(buttonStar);
//помещаем панель p2 в центральную область окна
windowContent.add("East",p2);
// создаем фрейм и задаем основную панель
JFrame frame = new JFrame("Calculator");
frame.setContentPane(windowContent);
// делаем размер окна достаточным
// для того чтобы вместить все компоненты
frame.pack();
//отображаем окно (делаем окно видимым)
frame.setVisible(true);
}
public static void main (String args[]){
Calculator calc = new Calculator();
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пишу веб-приложение и при объявлении сущностей использую ломбокПриложение компилируется и работает исправно, но в коде, где происходит работа...
Я ЧАЙНИК ! Не ругайтесь сильно ! дело в том что символ делителя ещё и повторяется в самом значении несколько разНа выходе имею кашу((( Как обозначить...