J'ai JFrame
avec 3 JPanel
(essentiellement trois onglets). un des panneaux a une zone de texte. il y a une restriction de valeur sur la zone de texte. Cela signifie que l'utilisateur peut entrer seulement 1-1000 nombre dedans. S'il entre un nombre> 1000, il lance le message d'avertissement. Maintenant j'utilise focuslistener pour sauvegarder le numéro entré dès qu'il perd le focus. Mais si l'utilisateur entre 1200 et clique sur un autre onglet (panneau), il me donne un message d'avertissement attendu mais va aussi à l'autre onglet. Je dois rester dans le même panneau s'il y a une boîte d'avertissement. Je ne veux pas perdre le focus du panneau actuel.java restreindre la commutation de fenêtre/Jpanel
mMaxLabelLength = new JTextField();
mMaxLabelLength.addActionListener(this);
public void focusGained(FocusEvent fe)
{
// do NOTHING
}
@Override
public void focusLost(FocusEvent fe)
{
saveActions();
}
public void actionPerformed(ActionEvent e)
{
//Do something
}
private void saveActions()
{
// error message
JOptionPane.showMessageDialog(this,
"Please enter an integer value between 1 and 1000.",
"Invalid Entry", JOptionPane.INFORMATION_MESSAGE);
SwiftApplication APP = SwiftApplication.getInstance();
int nMaxLabel = APP.getMaxPieLabel();
mMaxLabelLength.setText(new Integer(nMaxLabel).toString());
mMaxLabelLength.requestFocus();
}
Envisagez d'utiliser 'JSpinner' avec un [' SpinnerNumberModel'] (https://docs.oracle.com/javase/8/docs/api/javax/swing/SpinnerNumberModel.html) à la place. –