Существует JPanel с GridLayout, который случайным образом заполняется JButtons, созданными с использованием ArrayList. Каждый элемент массива (плитка) содержит символ. Предполагалось, что это игра по удалению плиток. Однако я понял, что код, который я написал, не не работает, потому что после удаления плитки индексы других меняются.
KeyListener применяется к JPanel. Этот метод находится в моем классе Model, где сначала создается ArrayList. getChar в классе Tile просто возвращает свой символ.
public void removeChar(char typedChar) {
for(Tile t: _al){
if(t.getChar() == typedChar) {
System.out.println(typedChar + " is in the game, at index " + _al.indexOf(t) + " of the array.");
_p.remove(_al.indexOf(t));
}
В моем коде я просто хочу удалить соответствующую плитку при вводе ее символьного ключа. Может ли кто-нибудь помочь мне увидеть лучший (ну, рабочий) способ сделать это? Мой код кажется намного более сложным, потому что ArrayList полон объектов, но эти объекты понадобятся мне позже.
_p.set(_al.indexOf(t), null)
‹- Вот я сделал это сnull
например. - person Yassin Hajaj   schedule 19.11.2015_p.set(_al.indexOf(t), null)
? И Эндрю, я никогда раньше не программировал, так что я не совсем понимаю, что ты имеешь в виду. По сути, моя игра должна быть клоном KeyBricks. - person   schedule 19.11.2015@
), чтобы уведомить человека о новом комментарии. - person Andrew Thompson   schedule 19.11.2015remove
используйтеset
, и это не изменит длину вашего списка. Затем при заполнении JPanel кнопками проверьте, например, является ли индекс нулевым, и не рассматривайте его как другие индексы. - person Yassin Hajaj   schedule 19.11.2015set
в ArrayList,_al
?_p
— это панель JPanel, в которой находятся кнопки JButton, поэтому для нее не существует такой вещи, какset
. - person   schedule 19.11.2015