import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener{
JButton[] nums;
JButton eq, mult, div, clr, clrEnt, sub, add, dot;
JTextArea txtArea = new JTextArea();
public Calculator() {
super("Calculator");
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel pane = new JPanel(new GridLayout(6, 1, 0, 5));
add(pane);
JPanel paneSecond = new JPanel(new GridLayout(1, 3, 5, 5));
JPanel paneThird = new JPanel(new GridLayout(1, 3, 5, 5));
JPanel paneFourth = new JPanel(new GridLayout(1, 3, 5, 5));
JPanel paneFifth = new JPanel(new GridLayout(1, 3, 5, 5));
JPanel paneSixth = new JPanel(new GridLayout(1, 3, 5, 5));
JPanel paneSeventh = new JPanel(new GridLayout(1, 3, 5, 5));
nums = new JButton[11];
//add = new JButton();
addOpButton(eq, "=");
addOpButton(mult, "x");
addOpButton(div, "/");
addOpButton(clr, "C");
addOpButton(clrEnt, "CE");
addOpButton(sub, "-");
addOpButton(add, "+");
addOpButton(dot, ".");
for (int i = 0; i < nums.length; i++) {
nums[i] = new JButton("" + i);
nums[i].setActionCommand(nums[i].toString());
nums[i].addActionListener(this);
}
addPanel(paneSecond, 1, 4);
addPanel(paneThird, 4, 7);
addPanel(paneFourth, 7, 10);
//addButtons(paneFifth, add, nums[0], sub);
pane.add(paneSecond);
pane.add(paneThird);
pane.add(paneFourth);
pane.add(paneFifth);
pane.add(paneSixth);
pane.add(paneSeventh);
pack();
}
void addPanel(JComponent pane, int start, int condition) {
for (int i = start; i < condition; i++) {
pane.add(nums[i]);
}
}
void addButtons(JComponent pane, JButton btn1, JButton btn2, JButton btn3) {
pane.add(btn1);
pane.add(btn2);
pane.add(btn3);
}
void addOpButton(JButton btn, String op) {
btn = new JButton(op);
btn.setActionCommand(op);
btn.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
}
public static void main(String[] args) {
Calculator calc = new Calculator();
}
}
addOpButton メソッドでは、どのボタンも初期化されていません。理由はわかりませんが。文字列は渡されて使用されていますが、ボタンは使用されていません。ボタンの 1 つ (コメントを削除したコンストラクターの「追加」ボタン) を初期化した後でも、ボタンはメソッド内でまだ null です。理由がわかりません。どんな助けでも大歓迎です。