Java обнаруживает нажатые кнопки - PullRequest
0 голосов
/ 25 мая 2010

У меня есть несколько панелей в окне JFrame. Я собираюсь заполнить каждую панель по-разному каждый раз. Например: я запускаю графический интерфейс: (центральная панель изображения, правая панель, нижняя панель). Центральная панель заполнена 20 кнопками, правая панель - 10 кнопками, а нижняя панель - 3.

второй запуск GUI (тот же графический интерфейс). Центральная панель имеет 50 кнопок, правая панель - 12 кнопок, нижняя - 3.

Таким образом, каждый раз, когда есть случайное количество кнопок, невозможно назвать все однозначно. Учитывая тот факт, что у меня нет уникального имени для каждой кнопки (просто список), я хотел бы знать, какие кнопки нажимались в соответствии с панелью, к которой они принадлежат. это возможно?

Ответы [ 3 ]

3 голосов
/ 25 мая 2010

Как-то кнопки создаются; Давайте предположим, что вы каким-то образом нумеруете их так, чтобы их можно было найти позже.

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.List;
import java.util.ArrayList;
import javax.swing.JButton;


public class ButtonTest extends JFrame implements ActionListener {

    public ButtonTest() {
        super();
        initGUI();
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }

    private final List<JButton> buttons = new ArrayList<JButton>();
    private static final int NUM_BUTTONS = 20;

    public void initGUI() {
        JPanel panel = new JPanel();
       for (int i = 0; i < NUM_BUTTONS; i++) {
           String label = "Button " + i;
           JButton button = new JButton(label);
           button.setActionCommand(label);
           button.addActionListener(this);
           buttons.add(button);
           panel.add(button);
       }
       getContentPane().add(panel);
    }

    public static void main(String[] args) {
        new ButtonTest();
    }

    public void actionPerformed(ActionEvent e) {
        String actionCommand = ((JButton) e.getSource()).getActionCommand();
        System.out.println("Action command for pressed button: " + actionCommand);
        // Use the action command to determine which button was pressed
    }


}
1 голос
/ 25 мая 2010

Если вы хотите узнать, какая панель содержит кнопку, попробуйте вызвать getParent() на самом JButton. Чтобы узнать, какая кнопка была нажата, как предлагает camickr, используйте getSource() в ActionEvent.

1 голос
/ 25 мая 2010

ActionEvent имеет метод getSource (), который будет ссылкой на нажатую кнопку. Затем вы можете проверить команду действия кнопки, если вам нужно.

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