Дело в том, что когда вы объявляете свой класс myButton
для реализации ActionListener
, вы увеличиваете его видимый API (т.е. добавляете новый публичный метод actionPerformed()
, который можно свободно вызывать любым кодом, который содержит ссылку на * 1004). *).
Поскольку вы, вероятно, не хотите, чтобы "actionPerformed
" являлся частью myButton
API, вам следует использовать внутренний класс, который сохранит общедоступный API myButton
.
Обратите внимание, что классы Swing полны плохих примеров, таких как тот, где публичные методы явно комментируются как " подробности реализации, не вызывайте напрямую ", на самом деле очень плохое проектное решение.