Я хочу удалить JButton из gridLayout, используя actionListener. Я хочу оставить в пустом пространстве JButton, который был удален, а затем заполнить это пространство с помощью JLabel или что-то в этом роде.Как добавить или удалить JButtons в определенном месте в gridlayout?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class bottons extends JFrame implements ActionListener{
private JPanel test;
private JButton[][] buttons;
private JuegoBuca(){
setVisible(true);
setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Test");
setResizable(false);
buttons = new JButton[5][5];
test = new JPanel();
test.setLayout(new GridLayout(5,5));
for(int i = 0 ; i<5 ; i++){
for(int j = 0; j<5 ; j++){
test.add(buttons[i][j] = new JButton(Integer.toString(index++)));
buttons[i][j].addActionListener(this);
}
}
add(test, BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
for(int i = 0; i<5 ; i++){
for(int j = 0 ; j<5; j++){
if(buttons[i][j] == o){
test.remove(buttons[i][j]);
}
}
}
}
В методе ActionListener, он вынимает JButton, но он перемещает кнопку других и заполняет пространство. Индекс просто должен иметь что-то в кнопке, чтобы сделать видимым изменение. Спасибо!
я бы просто использовать 'JButton' экземпляры для всех и не' JLabel'. Когда кнопка должна выглядеть как-то, установите для нее значок. Когда он должен выглядеть как «ничего», просто установите пустым (прозрачным) изображение на кнопку в качестве значка вместо первого значка. –
Итак, если вы нашли время, чтобы прочитать ответ, который я оставил на вашем [предыдущие вопросы] (http://stackoverflow.com/questions/19919807/how-to-remove-a-jbutton-in-a-jbutton- матрица) вы увидите ответ – MadProgrammer
-1, Да, это третий или четвертый вопрос по теме (похоже, что другие были удалены). Выйдите из форума с дублирующимися вопросами и обратите внимание на уже полученные ответы. Сказав это, вместо того, чтобы создавать ArrayList для поиска вашей кнопки, я бы просто использовал метод 'Container.getComponents()', поэтому вам не нужно отслеживать кнопки в двух местах. – camickr