Я делаю редактор уровней для своей игры. У меня есть панель свойств, где я могу изменить свойства выбранного объекта. У меня также есть кнопка Сохранить для записи уровня xml.
Редактирование поля отправляется (*), когда компонент редактора теряет фокус или Enter нажимается . Это отлично работает, но единственная проблема заключается в том, что когда у меня есть такая последовательность действий:
Потому что происходит следующее:
Как видите, это неправильный порядок. Конечно, я хочу, чтобы поле потеряло фокус, что приведет к отправке и , а затем сохранению уровня.
Есть ли уловка, хитрость или обходной путь, чтобы заставить поле сначала потерять фокус, а затем выполнить прослушиватель действия кнопки сохранения?
Заранее благодарим.
(* submit = редактирование поля также выполняется в свойстве объекта)
EDIT : Для поля я использую FocusAdapter с focusLost
:
FocusAdapter focusAdapter = new FocusAdapter()
{
@Override
public void focusLost(FocusEvent e)
{
compProperties.setProperty(i, getColor());
record(); // For undo-redo mechanism
}
};
И для кнопки простой ActionListener
с actionPerformed`.
btnSave.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
// Save the level
}
});