AWT Problem bei setText()

blumenpeter

Aktives Mitglied
Hallo Leute,

habe momentan leider ein kleines Problem mit der Methode
TextField.setText();

Ich habe eine GUI, in der ich nach eingabe eines Radius den Durchmesser,
den Flächeninhalt sowie den Umfang errechne. Jetzt nehme ich mir per "getText()"
den Inhalt des TextField und übergebe diesen einer variable(abc).
Die variable will ich aber in double haben, da ich mit dem Wert rechnen muss.
Deshalb habe ich "xyz = Double.parseDouble( abc ) ;" geschrieben.

Dies funktioniert auch. Durch einige Methoden habe ich dann die oben genannten Formeln angewand und würde diese gerne per setText() in neue Textfelder schreiben.

Aber Leider beiben die Felder leer.

Die methoden rufe ich über die Methode "public void actionPerformed(ActionEvent e)" auf.

Java:
 public static double getRadius(){

        ra = tf1.getText();
        ra1  = Double.parseDouble( ra ) ;
        return ra1;
    }

    public void durchmesserFormel(double ra1){

        df.valueOf(ra1*2.0);
        tf2.setText(df);
        
    }

    public void umfangFormel(double ra1){

        uf.valueOf(((ra1*2)*Math.PI));
        tf3.setText(uf);
        
    }

    public void flaecheFormel(double ra1){

        ff.valueOf(Math.PI*(ra1*ra1));
        tf4.setText(ff);
        
    }


Gruß!
 
dann ist tf4 wahrscheinlich nicht das was du in der GUI siehst,
ohne Code von der GUI, idealerweise komplettes kleines Testprogramm, kann alles möglich schiefgehen
 
Java:
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here

        Grundgerüst Fenster1 = new Grundgerüst("MeinFenster") ;
        Fenster1.setSize(600,600) ;
        Fenster1.setVisible(true) ;
    }

}

Java:
import java.awt.* ;
import java.awt.event.*;
import java.lang.Math;


public class Grundgerüst extends Frame implements ActionListener{

    private Button Knopf1, Knopf2;
    private String df, uf, ff;
    static double ra1;
    static String ra;
    static TextField tf1,tf2,tf3,tf4;
    

    Grundgerüst(String titel)
    {
        super(titel);
       
        Knopf1 = new Button("Berechnen");
        Knopf2 = new Button("Ende");
        Knopf1.addActionListener(this);
        Knopf2.addActionListener(this);
        Label l1 = new Label("Radius");
        Label l2 = new Label("Umfang");
        Label l3 = new Label("Fläche");
        Label l4 = new Label("Durchmesser");
        tf1 = new TextField();
        tf2 = new TextField();
        tf3 = new TextField();
        tf4 = new TextField();
        


        

        add(l1);
        add(tf1);
        add(l2);
        add(tf2);
        add(l3);
        add(tf3);
        add(l4);
        add(tf4);
        add(Knopf1);
        add(Knopf2);

        setLayout(new GridLayout(5,2));


    }

    public static double getRadius(){

        ra = tf1.getText();
        System.out.println(ra);
        ra1  = Double.parseDouble( ra ) ;
        return ra1;
    }

    public void durchmesserFormel(double ra1){

        df.valueOf(ra1*2.0);
        tf2.setText("df");
        System.out.println(df);

    }

    public void umfangFormel(double ra1){

        uf.valueOf(((ra1*2)*Math.PI));
        tf3.setText("uf");
        System.out.println(uf);

    }

    public void flaecheFormel(double ra1){

        ff.valueOf(Math.PI*(ra1*ra1));
        tf4.setText("dd");
        System.out.println(ff);
    }



    public void actionPerformed(ActionEvent e) {

        try{
            if(e.getSource() == Knopf1){

                
                durchmesserFormel(getRadius());
                umfangFormel(getRadius());
                flaecheFormel(getRadius());
            }

        }catch(Exception ex){

            System.err.println("Exception: "+ex);
        }

    }

}


Ich habe mal per System.out.println(); die ergebnisvariablen ausgegeben, doch komischer weise wird mir "null" ausgegeben.

Gruß!
 
valueOf ist eine statische Methode von String.
Nur weil Du die nun fälschlicher Weise (bekommst Du keine Warnung vom Kompiler bzw. der IDE?) an einem nicht initialisierten Objekt aufrufst, wird dieses Objekt noch lange nicht initialisiert.
Warum schreibst Du nicht gleich sowas wie:
Java:
textfeld.setText(String.valueOf(5*3));

Das umwandeln eines int in double kannst Du Dir auch sparen int * double liefert als Ergebnis ein double
 
na gut, dann hat es weniger mit den Textfeldern zu tun,


ff.valueOf(Math.PI*(ra1*ra1));
setzt keine Information in den String ff, der bleibt gar null

richtig lautet es z.B.
ff = "test";
oder eben auch
ff = String.valueOf(Math.PI*(ra1*ra1));

denn valueOf() ist eine statische Methode, die einen String zurückgibt
 
Hi,

danke jetzt hab ich es begriffen. Hatte mir die Methode wohl nicht gut genug angeschaut und auch nicht richtig gelesen. Aber jetzt klappt es!

Danke euch zwei.

Gruß!
 

Zurück
Oben