Есть ли что-нибудь, что может помешать правильной работе FocusListener?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Есть ли что-нибудь, что может помешать правильной работе FocusListener?

Сообщение Anonymous »

Я пытаюсь добавить FocusListener к некоторым JTextFields и JFormattedTextFields , все сделано правильно, и когда класс загружается, прослушиватель работает правильно, это простой метод выберите весь текст в TextFields, когда фокус получен, но TextField.selectAll() работает только один раз, затем, когда я фокусирую что-то еще, и возвращаю фокус в поле, он ничего не делает, но сам прослушиватель работает , я попробовал добавить System.out.println(evt.getComponent()), и он распечатывает результат, но фокус больше не выделяет весь текст...
Весь класс Frame огромен и очень специфичен, с некоторым кодом, сгенерированным IDE ¯\_(ツ)_/¯, поэтому я добавляю только два поля, которые, как я считаю, могут помочь понять, что у меня здесь есть...
tfVencimento = new javax.swing.JFormattedTextField(dateMask());
tfValorBruto = new javax.swing.JFormattedTextField(decimalMask());

tfValorBruto.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#,##0.00"))));

tfValorBruto.setText("0,00");
tfValorBruto.setMargin(new java.awt.Insets(2, 4, 2, 4));
tfValorBruto.setMinimumSize(new java.awt.Dimension(70, 22));
tfValorBruto.setPreferredSize(new java.awt.Dimension(70, 22));

tfValorBruto.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
FocusGained(evt);
}
});

tfVencimento.setMargin(new java.awt.Insets(2, 4, 2, 4));
tfVencimento.setMinimumSize(new java.awt.Dimension(70, 22));
tfVencimento.setPreferredSize(new java.awt.Dimension(70, 22));
tfVencimento.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
FocusGained(evt);
}
});

private void FocusGained(java.awt.event.FocusEvent evt) {
JTextField field = (JFormattedTextField) evt.getComponent();
field.selectAll();
}

Я думал, что это может быть что-то, что переопределяет мой прослушиватель, но ничего не нашел...

Может быть, я применил прослушиватель, попробовал несколько способов и все получилось...
Если я применю к каждому полю прослушиватель с разными методами для каждого (например, код ниже), это сработает, но у меня более 10 полей, поэтому это скучно делать, и код сложно поддерживать...
tfVencimento.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
tfVencimentoFocusGained(evt);
}
});

private void tfVencimentoFocusGained(java.awt.event.FocusEvent evt) {
tfVencimento.selectAll();
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... -correctly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»