JTextField - getText() Methode abbrechen?

Zitrus

Bekanntes Mitglied
Hallo,

Ich möchte eine getText() Methode abbrechen, dass sie ab einem bestimmten Zeitpunkt, z.B wenn ein bestimmter Buchstabe auftaucht, abbricht.

Mit freundlichen Grüßen,
Zitrus???:L
 
Man kann eine getText Methode nicht abbrechen. Aber du kannst die Eingabe verhindern indem du ein Document zu deinem TextField setzt.

Java:
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class FormattedTextField {
  
  public static void main(String[] args) {
    new FormattedTextField();
  }
  
  public FormattedTextField() {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLocationByPlatform(true);
    
    JTextField field = new JTextField(20);
    field.setDocument(new PlainDocument() {
      private static final long serialVersionUID = -324142616871349734L;
      
      @Override
      public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
        for (char c : str.toCharArray()) {
          if (Character.isDigit(c)) {
            return;
          }
        }
        super.insertString(offs, str, a);
      }
    });
    
    frame.add(field);
    frame.pack();
    frame.setVisible(true);
  }
}
 
Java:
if(ae.getSource() == this.button4) {
    	        double d1 = Double.parseDouble(a);
    	        System.out.println(d1);
    	        field.setDocument(new PlainDocument() {
    	            private static final long serialVersionUID = -324142616871349734L;
    	     
              
    	        field.setText("");
    	        
    	           	     
         }

Ich möchte danach noch eine getText() Methode haben die dann die zweite Zahl speichert bzw. ausliest. Funktioniert aber nicht mit dem Document..
 
Deine Forderung ergibt keinen Sinn. Formuliere die Frage nocheinmal und detailiert, sonst kann man dir nicht helfen. Wenn du Illustrationen davon hast umso besser.
 
Also nochmal detailliert... Will einen Taschenrechner schreiben und bin grad mit der Addition dran.
Java:
public void actionPerformed (ActionEvent ae){
    	 
        String a = field.getText();
        String b = field.getText();
       
    	 if(ae.getSource() == this.button1){
             field.setText(field.getText() + "1");
    	 }
    	 if(ae.getSource() == this.button2) {	
    		 field.setText(field.getText() + "2");
    	 }
    	 if(ae.getSource() == this.button3) {	
    		 field.setText(field.getText() + "3");
    	 }
         
    	 if(ae.getSource() == this.button4) {
    	        double d1 = Double.parseDouble(a);
    	        System.out.println(d1);
    	        
    	        field.setText("");
    	        
    	        double d2 = Double.parseDouble(b);
        	    System.out.println(d2);
    	         	     
         }

Und ich weiß nicht wie ich die 2. Zahl , also die Zahl nach dem + in einem String abspeichern soll. Deswegen wollte ich wissen ob man einge getText()-Methode sogesagt stoppen kann, dass sie eben keinen Text mehr bekommt.

Ich hoffe es war verständlicher für dich meine Gedanken halbwegs zu verstehen..

Mfg Zitrus
 
Die ursprüngliche Idee ist durchaus möglich.
Man könnte dem JTextField ein KeyListener-Objekt verpassen, das bei jeder Zeicheneingabe entsprechend prüft.
Für einen Programmier-Anfänger würd' ich aber davon abraten, bis er wenigstens die üblichen "ActionListener"-Beispiele gelehrt bekommen und verstanden hat.
 

Zurück
Oben