Есть ли способ, чтобы гарантировать, что конкретный ActionEvent всегда первым первым?
Спецификация Java не гарантирует порядок, в котором запускаются события.
Однако, я считаю, что реализация по умолчанию заключается в том, что последний компонент ActionListener, добавленный в компонент, является первым.
Edit:
Я использую слушателя мыши
Почему вы используете MouseListener? Что происходит, когда пользователь вводит вкладку в/из поля? Не предполагайте использование мыши. В этом случае FocusListener будет обрабатывать активность клавиатуры или мыши.
Проблема возникает, когда пользователь нажимает кнопку ввода в текстовое поле.
Что произойдет, если пользователь не нажимает кнопку ввода, и они просто переходят в следующее поле? Это то, что я сделал бы.
Это должно произойти до того, как другие исполнители действий сделают свою работу.
Другие лидеры боев? В поле tgext будет только один прослушиватель.
Во всяком случае, может быть, действительно ответить на ваш вопрос, вы можете эффективно изменить порядок выполнения, используя SwingUtilities.invokeLater (...), чтобы разместить свой код на конце события диспетчерского Thread так выполняется после всех других событий:
public void actionPerformed(ActionEvent e)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
// add your code here
}
});
}
Опять же, любое решение, зависящее от порядка событий, не является хорошим решением. Порядок событий может отличаться на разных платформах.
'но мне нужно, в частности, всегда стрелять первым.' - Почему? Звучит неплохо. Дайте нам реальное требование, а не ваше попытку решения, и мы сможем предложить лучший подход. – camickr
См. [Что такое проблема XY?] (Http://meta.stackexchange.com/q/66377) –
В моем JTextField отображается форматированная денежная строка. Когда пользователь нажимает текстовое поле, он переключается на свое реальное значение.Например, текстовое поле отображает $ 1.00, но когда пользователь нажимает на него для его редактирования, он отображает 1.0. – user489041