У меня есть такая ситуация, когда я хотел бы отобразить число цифрами. Число будет введено в поле Jtext, и мне бы хотелось, чтобы во всплывающей подсказке отображалась сумма цифрами. Проблема в том, что во всплывающей подсказке отображаются более старые данные.
Я написал код, чтобы показать вам проблему:
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class Test
{
public static void main(String[] args) {
final JFrame frame=new JFrame();
frame.setLayout(new FlowLayout());
frame.setPreferredSize(new Dimension(400,100));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTextField tf=new JTextField(30);
frame.add(tf);
frame.add(new JTextField(30));
tf.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
tf.setToolTipText(tf.getText());
}
@Override
public void focusGained(FocusEvent e) {
tf.setToolTipText(tf.getText());
}
});
SwingUtilities.invokeLater(new Runnable() {
public void run() {
frame.pack();
frame.setVisible(true);
}
});
}
}
Давайте возьмем эту ситуацию, пользователь печатает число в первом текстовом поле. Текстовый курсор все еще находится в том же текстовом поле. Когда пользователь теперь перемещает указатель мыши над первым текстовым полем, во всплывающей подсказке все еще отображается старый текст.
Теперь, когда вы перемещаете фокус на второе текстовое поле, данные первого текстового поля фиксируются, поэтому всплывающая подсказка также обновляется.
Теперь, как мне показать всплывающую подсказку для текста, который все еще не зафиксирован в текстовом поле?