Добавление обработчиков кнопок в цикле - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть несколько JButton, и я пытаюсь добавить их слушатели действия в цикл for, но это дает исключение нулевого указателя, однако никаких проблем не возникает, если я добавляю их один за другим. Мне интересно, какова моя неправильная точка зрения. Спасибо.

JButton[ ] myButtonArray = { but1, but2, but3 };
ButtonHandler bh = new ButtonHandler();

for (JButton cur : myButtonArray) {    // I tried standard for loop as well.
    cur.addActionListener(bh);
}

Ответы [ 3 ]

5 голосов
/ 13 декабря 2011

Прекрасно работает для меня .. Попробуйте это демо

enter image description here

package sof;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class CustomLayoutFrame{
    public static void main(String args[]) {
        JFrame frame = new JFrame("Custom Layout Frame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setLayout(new GridLayout(3,1));

        JButton but1 = new JButton("Button1");
        JButton but2 = new JButton("Button2");
        JButton but3 = new JButton("Button3");

        JButton[ ] myButtonArray = { but1, but2, but3 };
        ButtonHandler bh = new ButtonHandler();

        for (JButton cur : myButtonArray) {    // I tried standard for loop as well.
            cur.addActionListener(bh);
        }

        frame.add(but1);
        frame.add(but2);
        frame.add(but3);

        frame.setSize(300, 150);
        frame.setVisible(true);
      }
}

class ButtonHandler implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent arg0) {
        System.out.println(((JButton)(arg0.getSource())).getText() + " Clicked !");

    }
}
1 голос
/ 13 декабря 2011

Я бы предположил, что хотя бы одна из ваших кнопок имеет значение null - т.е. but1, but2 или but3 (или все они) не были инициализированы. Wh

1 голос
/ 13 декабря 2011

А вы инициализировали but1, but2 и but3?Потому что это наиболее вероятный источник вашего нулевого исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...