Swing JButton durch Eingabe von Zahlen in JTextFields aktivieren

JCheckBox

Neues Mitglied
Hallo,

ich habe ein Programm mit 22 JTextFields und einem JButton. Der JButton ist standardmäßig deaktiviert.
Mein Ziel ist, dass er nur aktiviert wird, wenn in mindestens einem der Textfelder eine Ganzzahl von 1-500 steht. Bei Buchstaben, Sonderzeichen und Zahlen außerhalb des genannten Bereiches soll er deaktiviert bleiben. Außerdem soll sich der Button wieder deaktivieren, wenn in keinem Textfeld mehr die erlaubten Zeichen stehen. Ich suche jetzt schon seit mehreren Tagen nach einer Lösung (bei Google, in Büchern, in anderen Foren...) :rtfm: und ich hoffe, hier kann mir geholfen werden.


Vielen Dank im Voraus 🙂

JCheckBox
 
Füge allen JTextFields einen KeyListener hinzu. Überprüfe in
Code:
keyTyped()
ob in dem entsrechenden JTextField eine eine Ganzzahl von 1-500 steht:

Java:
KeyAdapter keyadapter= new KeyAdapter() {
    public void keyTyped(KeyEvent evt) {
        if(evt.getSource() instanceof JTextField) {
            JTextField txtfld = (JTextField) evt.getSource();
            int result = 0;
            try {
                result = Integer.parseInteger(txtfld.getText());
                deinJButton.setEnabled(true);
            } catch(Exception ex) {
                // Den selben Testvorgang mit allen anderen JTextFields durchführen
                // - falls ebenfalls nur Exceptions, dann deinJButton.setEnabled(false);
                // - wenn nicht - nichts machen, da deinJButton bereits enabled ist
            }
        }
    }
};

JTextFiled[] textfield = new JTextField[5/*deine Anzahl an TextFelder*/];
textfield[0] = new JTextField();
textfield[0].addKeyListener(keyadapter);

textfield[1] = new JTextField();
textfield[1].addKeyListener(keyadapter);

// etc.
 
Vielen Dank GUI-Programmer, ich habe es jetzt so gemacht:

Java:
KeyAdapter keyadapter= new KeyAdapter() {
public void keyTyped(KeyEvent evt) {
if(evt.getSource() instanceof JTextField) {
JTextField txtfld = (JTextField) evt.getSource();
Integer result = 0;
try{result = Integer.parseInt(txtfld.getText());
		                	if (result>=1 && result <= 500)
		                { btnstart.setEnabled(true);}}
catch (Exception ex){
		        	
		        }
finally{if (result<1){btnstart.setEnabled(false);}}
		        }
		    }
		};
JTextField[] textfield = new JTextField[22];
		
textfield[0] = new JTextField();
textfield[0].setBounds(105,107,32,20);
contentPane.add(textfield[0]);
textfield[0].setColumns(10);
textfield[0].addKeyListener(keyadapter);

Allerdings muss man jetzt mindestens zweistellige Zahlen eingeben, um den JButton zu aktivieren.
Leider hab ich keine Ahnung, wie ich dieses Problem lösen kann.

JCheckBox
 

Zurück
Oben