Я создаю игру Tic-Tac-Toe, в которой квадрат в сетке представлен классом Square, который я создал. Он расширяет JButton, но я добавил логическое поле под названием с прессом, в котором указано, можно ли нажать кнопку в игре. Если кнопка уже имеет букву, она не может быть нажата. Я хочу реализовать код в моем методе actionPerformed(), который будет проверять переменную с прессой, и если с прессом является ложным, это не изменит букву квадрата. Я использую метод getSource() в своем ActionEvent, чтобы дать мне ссылку на нажатый квадрат. Поэтому мне нужно наложить объект на квадрат, чтобы я мог получить доступ к его прессуемому поле. Но когда я это делаю, я получаю следующую ошибку: java.lang.ClassCastException: javax.swing.JButton cannot be cast to tic.tac.toe.Square
Это не имеет для меня никакого смысла. Прежде чем я нуждался в каждом квадрате, чтобы иметь поле с прессом, я использовал JButton, который работал отлично. Но так как Square наследует Дж. Баттона, я думаю, что это сработает. Как я могу это исправить?Java: не может быть добавлен в пользовательский класс
ответ
Виртуальная машина Java говорит вам правду: объект, возвращаемый getSource()
фактически JButton и не Квадрат объекта, несмотря на ваши заявления выше. Таким образом, факт: вы добавляете свой ActionListener в JButton и не к квадратному объекту. Вам нужно будет проверить свой код, чтобы понять, почему это так. Если вам нужна дополнительная помощь, вам нужно будет показать этот код.
Редактировать
Вы состояние:
I looked into it and realized that my "Start" button was going through the same process, which is where the error came from.
Спасибо за обновление.
Это означает, что вы используете один ActionListener для всех кнопок, которые вы не захотите делать. Конечно, все кнопки tic-tac-toe могут использовать один и тот же прослушиватель, но любые другие должны использовать собственный отдельный объект-слушатель, возможно, через анонимный внутренний класс.
Я заглянул в него и понял, что моя кнопка «Пуск» проходит тот же процесс, из которого произошла ошибка. Спасибо! – user3113531
@ user3113531: спасибо за обновление. См. Править для ответа. –
Вы можете отключить JButton при первом щелчке с помощью .setEnabled (false), который обойдет эту проблему. Но я согласен с HovercraftFullOfEels.
- 1. Пользовательский контроль не может быть добавлен программно
- 2. Пользовательский макет не может быть добавлен в действие
- 3. AntClassLoader не может быть добавлен в URLClassLoader
- 4. Пользовательский виджет не может быть добавлен к пользовательскому виджету
- 5. Исключение: класс не может быть добавлен в android.app.activity
- 6. Класс не может быть добавлен в android.view.View $ OnClickListener
- 7. java.lang.String не может быть добавлен в java.util.Map
- 8. Класс не может быть добавлен на вход с помощью JQuery
- 9. android.widget.LinearLayout не может быть добавлен в android.widget.ImageView?
- 10. BitmapDrawable не может быть добавлен в AnimationDrawable
- 11. Java sun.uil.ResourceBundleEnumeration не может быть добавлен в java.lang.String
- 12. JAVA - Объект не может быть добавлен в Object Array - NullPointerException
- 13. Может ли пользовательский текст быть добавлен в ячейку списка?
- 14. NSMutableArray не может быть добавлен в
- 15. android.widget.TableRow не может быть добавлен в android.widget.TableLayout
- 16. SupportMapFragment не может быть добавлен в FrameLayout
- 17. scala collection.Map не может быть добавлен в
- 18. java.lang.String не может быть добавлен в com.example.expandablelistview.NewsItem
- 19. com.sun.tools.apt.mirror.type.ClassTypeImpl не может быть добавлен в com.sun.mirror.type.AnnotationType
- 20. android.widget.TextView не может быть добавлен в android.view.ViewGroup0
- 21. com.handmark.pulltorefresh.library.PullToRefreshListView не может быть добавлен в android.widget.ListView
- 22. android.widget.FrameLayout не может быть добавлен в android.widget.ListView
- 23. не может быть добавлен в com.google.android.gms.common.api.GoogleApiClient $ ConnectionCallback
- 24. Может абстрактный класс быть добавлен в качестве подкласса Hashmap
- 25. Класс Eclipse/Java не может быть найден
- 26. ClassCastException Строка не может быть преобразована в пользовательский класс
- 27. ftrScanApi.dll ссылка не может быть добавлен
- 28. Scroll Контейнер не может быть добавлен
- 29. несколько внешних ключей не может быть добавлен
- 30. класс не может быть создан
Добро пожаловать в SO. прочитайте эти ссылки (http://stackoverflow.com/questions/how-to-ask http://sscce.org/) о том, как опубликовать вопрос. Таким образом, вы получите лучший результат. Подсказка (показывая, что какой-то код будет полезен). http://stackoverflow.com/help/on-topic – OldProgrammer