Массив из кнопок java

Массив из кнопок java

 public GUIBoard(int boardSize)< _setBoardSize = boardSize; setLayout(new GridLayout(_setBoardSize, _setBoardSize)); _cellBtn = new JButton[_setBoardSize*_setBoardSize]; for(i=0; inew JButton("x"); _cellBtn[i].addActionListener(new MineListener()); add(_cellBtn[i]); > >

Каким образом можно отслеживать все кнопки? Прописывать каждую по отдельности? Или что то нужно менять.
Идея сделать поле как в игре MineSweeper.

Если я не в правильном направлении дайте пожалуйста краткое обьяснение и если можно ссылочки.
Java только учу, по этому ссылки на сложные обьяснения могут сильно замедлить обучение.

А> public GUIBoard(int boardSize) < А>_setBoardSize = boardSize; А> setLayout(new GridLayout(_setBoardSize, _setBoardSize)); А> _cellBtn = new JButton[_setBoardSize*_setBoardSize]; А> for(i=0; i _cellBtn[i] = new JButton("x"); А> _cellBtn[i].addActionListener(new MineListener()); А> add(_cellBtn[i]); А> > А> > А>

А>Каким образом можно отслеживать все кнопки? Прописывать каждую по отдельности? Или что то нужно менять.
А>Идея сделать поле как в игре MineSweeper.

А>Если я не в правильном направлении дайте пожалуйста краткое обьяснение и если можно ссылочки.
А>Java только учу, по этому ссылки на сложные обьяснения могут сильно замедлить обучение.

Есть такой вариант, но не уверен что он лучший

 private class MineListener implements ActionListener< public void actionPerformed(ActionEvent e) < for(i=0; iif(e.getSource()==_cellBtn[i]) _cellBtn[i].setText("0"); > >

Здравствуйте, <Аноним>, Вы писали:

А>Каким образом можно отслеживать все кнопки? Прописывать каждую по отдельности? Или что то нужно менять.
А>Идея сделать поле как в игре MineSweeper.

Не совсем понял (или совсем не понял), что Вам надо. Если вы хотите отслеживать состояние каждой кнопки (открыта, флаг или еще что-нибудь), то просто повесьте ActionListener (он у Вас уже есть) и по совершению действия помечайте в каком-нибудь внутреннем массиве состояние кнопки. Как вариант, сделать JMyButton, который еще помимо того, что это будет JButton, хранить еще и состояния свои. Может, можно на JComponent в свингах объект повесить (я свинга не знаю)?

Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:
А>Есть такой вариант, но не уверен что он лучший

А>

А> private class MineListener implements ActionListener < А>public void actionPerformed(ActionEvent e) < А>for(i=0; i if(e.getSource()==_cellBtn[i]) А> _cellBtn[i].setText("0"); А> > А> > А>
 private class MineListener implements ActionListener< public void actionPerformed(ActionEvent e) < ((JButton) e.getSource()).setText("0"); > >
L> private class MineListener implements ActionListener < L>public void actionPerformed(ActionEvent e) < L>((JButton) e.getSource()).setText("0"); L> > L> > L>

Спасибо, именно это и нужно.

Источник

Массив кнопок

Попробую свести задачу к минимуму. Есть кнопка «добавить», которая создает новую кнопку. Соответственно, добавлять кнопок можно сколько угодно. В итоге получается массив кнопок (кнопка «добавить» к нему не относится). Так вот, мне нужно, чтобы при нажатии на любую из кнопок этого массива, она удалялась. Вроде бы не сложно, но видимо я что-то до конца не понимаю и не могу правильно реализовать. Максимум что получилось — удаление последней добавленной кнопки, причем не важно на какую нажимаешь, а после этого отклик вообще теряется и ничего не происходит при нажатии на любую кнопку.
Ниже приведен метод, в котором по идее для каждой кнопки должен настраиваться свой обработчик событий.
В целом, я понимаю в чем проблема, видимо на все кнопки получается один обработчик событий, а после удаления кнопки, обработчик тоже удаляется, и остаются только старые кнопки, которые ничего не делают.
Так вот вопрос в том, как сделать так, чтобы у каждой кнопки был свой личный обработчик событий, но чтобы при этом не настраивать каждую кнопку отдельно, разумеется.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
private HBox task; private TextField nameOfTask; private Button closePageButton; public HBox newTask() { task = new HBox(); nameOfTask = new TextField(); closePageButton = new Button("X"); closePageButton.setOnAction(new EventHandlerActionEvent>() { @Override public void handle(ActionEvent event) { task.getChildren().remove(closePageButton); } }); task.getChildren().addAll(nameOfTask, closePageButton); return task; }

Источник

Массив кнопок — Java

Попробую свести задачу к минимуму. Есть кнопка «добавить», которая создает новую кнопку. Соответственно, добавлять кнопок можно сколько угодно. В итоге получается массив кнопок (кнопка «добавить» к нему не относится). Так вот, мне нужно, чтобы при нажатии на любую из кнопок этого массива, она удалялась. Вроде бы не сложно, но видимо я что-то до конца не понимаю и не могу правильно реализовать. Максимум что получилось — удаление последней добавленной кнопки, причем не важно на какую нажимаешь, а после этого отклик вообще теряется и ничего не происходит при нажатии на любую кнопку. Ниже приведен метод, в котором по идее для каждой кнопки должен настраиваться свой обработчик событий. В целом, я понимаю в чем проблема, видимо на все кнопки получается один обработчик событий, а после удаления кнопки, обработчик тоже удаляется, и остаются только старые кнопки, которые ничего не делают. Так вот вопрос в том, как сделать так, чтобы у каждой кнопки был свой личный обработчик событий, но чтобы при этом не настраивать каждую кнопку отдельно, разумеется.

private HBox task; private TextField nameOfTask; private Button closePageButton; public HBox newTask() < task = new HBox(); nameOfTask = new TextField(); closePageButton = new Button("X"); closePageButton.setOnAction(new EventHandler() < @Override public void handle(ActionEvent event) < task.getChildren().remove(closePageButton); >>); task.getChildren().addAll(nameOfTask, closePageButton); return task; >

Код к задаче: «Массив кнопок»

public class SelfDelButtons extends JFrame implements ActionListener < private int counter; private JPanel jp = new JPanel(); private ArrayListlist = new ArrayList<>(); SelfDelButtons() < setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setSize(700, 100); add(jp); JButton button = new JButton("Primary Button"); button.addActionListener(this); jp.add(button); >@Override public void actionPerformed(ActionEvent e) < if (e.getActionCommand().equals("Primary Button")) < counter++; JButton nb = new JButton("Button " + counter); nb.addActionListener(this); jp.add(nb); list.add(nb); >else < findAndDelButton((JButton) e.getSource()); >jp.revalidate(); > void findAndDelButton(JButton b) < for (Iteratoriterator = list.iterator(); iterator.hasNext(); ) < JButton i = iterator.next(); if (i.equals(b)) < iterator.remove(); jp.remove(i); break; >> > public static void main(String[] args) < JFrame window = new SelfDelButtons(); window.setVisible(true); >>

Источник

Читайте также:  Java project archetype maven
Оцените статью