Моя проблема: у меня есть динамический список объектов (динамичный в том смысле, что я не знаю, сколько элементов он будет содержать). Мне нужна кнопка для каждого из них, и каждая кнопка должна «рассказать мне», какой элемент был выбран. Я действительно не хочу использовать флажки или радиобулты (и, насколько я знаю, они не могут хранить/вернуть объект, верно?), Так что мое решение было: подкласс Jbutton в Itembutton, который является Jbutton, но у меня также есть поле для хранения моего предмета. Таким образом, в привязанном к нему слушатель я могу просто вызвать метод returnItem, и у меня будет выбранный элемент, готов к использованию. < /P>
Это внутренний класс: < /p>
class toolButton extends JButton {
toolButton(String name, int i) {
super(name);
this.index = i;
}
public int getSelectionIndex() {
return this.index;
}
private int index;
}
< /code>
Метод, который генерирует мой список кнопок: < /p>
public void showItemList(ArrayList arrayList) {
for (int i = 0; i < arrayList.size(); i++) {
toolButton but = new toolButton(arrayList.get(i).getName()", i); //getName() returns the name of the Item to be displayed
this.add(but);
but.addMouseListener(new MouseAdapter() {
// Simple anonymous class for the listener
public void mousePressed(MouseEvent e) {
selected = but.getSelectionIndex(); //This sets the index number in the class that uses this method
}
});
}
}
< /code>
работает, для того, что я делаю, по крайней мере. Но мне было интересно, есть ли лучший метод, или это, по крайней мере, приемлемо, если он вообще не одобрен. Я не думаю, что использование GetSource () в ActionEvent будет полезно использовать в этом случае. И я не могу написать слушателя для каждой кнопки, потому что я не знаю, сколько их. У класса дозатора есть метод «Покупать (предмет)». Итак, я хочу сделать кнопку, представляющую каждый доступный элемент в дозаторе, и когда кнопка нажимается, я хочу, чтобы ссылка на элемент перешел на метод Buy (Item) (кнопка не должна вызывать метод покупки (элемент).>
Подробнее здесь: https://stackoverflow.com/questions/383 ... n-property