Я делаю игру памяти, используя Java Swing. до сих пор я создал класс, который возвращает пользовательские кнопки JButton с уже имеющимся изображением (без слипов). в основном классе я создаю объекты этого класса и добавляю их на панель. все работает, но когда я добавляю слушателей действия, метод getSource возвращает JButton, и в результате я не могу использовать методы внутри класса пользовательских кнопок. Как я могу использовать getSource и создать кнопку из класса пользовательских кнопок?
Я попытался привести кнопку, возвращенную из метода getSource, к кнопкам (класс пользовательских кнопок), но это не сработало.
public class Buttons extends JButton{
int id;
JButton butt;
private static int x=0;
public Buttons() throws IOException{
butt=this.retButton();
}
public JButton retButton() throws IOException{
BufferedImage img =
ImageIO.read(getClass().getResourceAsStream("/folder/flipped.png"));
ImageIcon image = new ImageIcon(img);
JButton button = new JButton();
button.setName(Integer.toString(x));
button.setIcon(image);
button.setBackground(Color.white);
x+=1;
return button;
}
public JButton getButton(){
return this.butt;
}
public int getId() {
return id;
}
}
в основном классе я использую:
for (int i=0; i<12; i++){
jb[i] = new Buttons();
jb[i].getButton().addActionListener(this);
jb[i].setId(cardNums.get(i));
panel.add(jb[i].getButton());
}
frame.add(panel, BorderLayout.CENTER);
frame.pack();
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source instanceof JButton) {
JButton btn = (JButton)source;
System.out.println("hey");}
слушатель действия работает, но поскольку btn является JButton, он не позволит мне использовать метод getId класса Buttons.