require 'time'
require 'date'
t = Time.now
d = DateTime.now
dd = DateTime.parse(t.to_s)
tt = Time.parse(d.to_s)
Я после долгих поисков нашел информацию здесь . По сути, вы можете добавить это к своему методу actionPerformed вашего действия:
action.putValue(Action.SELECTED_KEY, Boolean.TRUE);
И это сделает всю работу за вас!
К сожалению, официальные руководства Sun не охватывают этот аспект (или, по крайней мере, я его не заметил) , отсюда и трудность определения такого простого подхода к решению моей проблемы.
С другой стороны (снова я), вы можете просто написать 1 слушателя во внешнем классе. Слушатель для меню и для панели инструментов. Когда 1 изменяется, слушатель устанавливает для них обоих новое значение.
Шаблон наблюдателя мой друг. Строка меню соответствует панели инструментов, а панель инструментов - строке меню. Они оба будут наблюдателями и наблюдаемыми. У каждого есть свой слушатель, который при событии изменения уведомляет наблюдателя (другого) с новым значением параметра.
Одно из больших преимуществ шаблона наблюдателя заключается в том, что существует очень низкая связь, поэтому вы не требуется значительного рефакторинга, чтобы реализовать связывание, изменить его или удалить в будущем.
Если вы используете Swing Actions, компоненты должны быть отключены / включены автоматически, если само действие включено. Вы можете зарегистрироваться как propertyListener для действия, а также отслеживать другие изменения. См. http://java.sun.com/javase/6/docs/api/javax/swing/Action.html для получения подробного списка доступных свойств.