Commander_COM Geschrieben 26. Mai 2005 Geschrieben 26. Mai 2005 Huhu, ich werd hier noch bekloppt... wie bekomme ich mein awt-Textfield zum aktualisieren???? TF.setText("Optimaler Weg: "+ Calc.optWegToString()+ " Dauer: " + Calc.optWegDauer()); TF.repaint(); geht nicht... steht immer das drin, was er bei allerersten Mal angezeigt hat *grübel* EDIT: mit Label gehts auch nicht!?! Zitieren
Krain Geschrieben 26. Mai 2005 Geschrieben 26. Mai 2005 Kannst du mal etwas Code posten... damit man mal kurz rein schauen kann? Bei mir funktioniert es nämlich. gruss markus Zitieren
Commander_COM Geschrieben 26. Mai 2005 Autor Geschrieben 26. Mai 2005 Jaraz: Bitte code Tags benutzen! package com.mindobject.pojo; import java.awt.Graphics; import java.awt.Frame; import java.awt.Button; import java.awt.Label; import java.awt.Color; import java.awt.event.WindowEvent; import java.awt.event.WindowAdapter; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.util.Iterator; import java.util.Random; /** * * Klasse zum Zeichen der Umgebung * * @version 1.0 vom 20.05.2005 */ public class Draw extends Frame implements ActionListener { private Button drawknopf; private Button drawlikepicknopf; private Button calcknopf; private Label TF; /** * Standard-Konstruktor zeichnet das Frame und die Buttons */ public Draw() { // Frame-Initialisierung super("Ikosaeder - Aufgabe"); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); int frameWidth = 700; int frameHeight = 350; setSize(frameWidth, frameHeight); setResizable(false); setLayout(null); setVisible(true); setLocation(150, 150); Button drawknopf = new Button("Zufälliger Iko."); drawknopf.setBounds(580, 50, 100, 20); drawknopf.addActionListener(this); add(drawknopf); Button drawlikepicknopf = new Button("gegebener Iko."); drawlikepicknopf.setBounds(580, 80, 100, 20); drawlikepicknopf.addActionListener(this); add(drawlikepicknopf); } /** * Methode zum Überschreiben von ActionListener Buttons werden mit Labels * versehen und dann hier eingefügt */ public void actionPerformed(ActionEvent e) { Random generator2 = new Random(); int zufall; int zufall2; Button obj = (Button) e.getSource(); int z; // Button "Draw Ikosaeder" if (obj.getLabel().equals("Zufälliger Iko.")) { // calcknopf.setVisible(true); do { zufall = 1 + generator2.nextInt(20); zufall2 = 1 + generator2.nextInt(20); } while (zufall == zufall2); System.out.println(zufall + " " + zufall2); if (zufall + zufall2 >= 20) { zufall = Math.abs(zufall - zufall2); } else { zufall = zufall + zufall2; } Ikosaeder Iko = new Ikosaeder(); Iko.zufIkosaeder(250); drawDreieck(Iko); faerbeDreieck(Iko.getDreieckn(zufall)); // //Mal zum testen die Nachbarn färben // faerbeDreieck(Iko.getDreieck(Iko.getDreieck(zufall // ).getNachbar1())); // faerbeDreieck(Iko.getDreieck(Iko.getDreieck(zufall // ).getNachbar2())); // faerbeDreieck(Iko.getDreieck(Iko.getDreieck(zufall // ).getNachbar3())); Calculate Calc = new Calculate(); Label TF = new Label(); TF.setBounds(5, 300, 690, 35); TF.setBackground(Color.WHITE); // TF.setEditable(false); // TF.setFocusable(false); add(TF); Calc.berechne(Iko, Iko.getDreieckn(zufall)); System.out.println("--->" + Calc.optWegToString()); TF.setText("Optimaler Weg: " + Calc.optWegToString() + " Dauer: " + Calc.optWegDauer()); TF.repaint(); } // Button "gegebener Iko." if (obj.getLabel().equals("gegebener Iko.")) { // calcknopf.setVisible(true); Ikosaeder Iko = new Ikosaeder(); Iko.gegIkosaeder(250); drawDreieck(Iko); faerbeDreieck(Iko.getDreieckn(12)); // //Mal zum testen die Nachbarn färben // faerbeDreieck(Iko.getDreieck(Iko.getDreieck(12).ge tNachbar1())); // faerbeDreieck(Iko.getDreieck(Iko.getDreieck(12).ge tNachbar2())); // faerbeDreieck(Iko.getDreieck(Iko.getDreieck(12).ge tNachbar3())); Calculate Calc = new Calculate(); Label TF = new Label(); TF.setBounds(5, 300, 690, 35); TF.setBackground(Color.WHITE); // TF.setEditable(false); // TF.setFocusable(false); add(TF); Calc.berechne(Iko, Iko.getDreieckn(12)); System.out.println("--->" + Calc.optWegToString()); TF.setText("Optimaler Weg: " + Calc.optWegToString() + " Dauer: " + Calc.optWegDauer()); TF.repaint(); } } /** * Zeichnet alle Dreiecke des Ikosaeders * * @param iko * Es wird ein Ikosaeder übergeben */ private void drawDreieck(Ikosaeder iko) { Iterator it = iko.getDreieckSet().iterator(); this.getGraphics().clearRect(0, 0, 1000, 1000); while (it.hasNext()) { Dreieck d = (Dreieck) it.next(); this.getGraphics().translate(50, 50); d.zeichne(this.getGraphics()); } } /** * Unterlegt das Startfeld farbig * * @param iko * Ein Ikosaeder * @param nummer * Die Nummer des zu färbenden Dreiecks */ private void faerbeDreieck(Dreieck Drei) { this.getGraphics().translate(50, 50); Drei.fuelle(this.getGraphics()); } /* * public static void main(String[] args) { * * Ikosaeder Iko = new Ikosaeder(150); Draw draw = new Draw(); } */ } Zitieren
Krain Geschrieben 26. Mai 2005 Geschrieben 26. Mai 2005 Zunächst mal erzeugst du in jedem actionPerformed ein neues Label... Erzeuge das label nur einmal im Konstruktor und setze in der actionPerforemd nur den text neu auf das Label... Zitieren
Commander_COM Geschrieben 26. Mai 2005 Autor Geschrieben 26. Mai 2005 wenn ich das tue, gibts eine NullPointerException, weil er das Label net mehr findet! deswegen hatte ich das auch in die methode mit reingenommen... wo liegt mein fehler dann? Zitieren
Krain Geschrieben 26. Mai 2005 Geschrieben 26. Mai 2005 Warum das? Mach es so: class XYZ extends JPanel implements ActionListener { private JLabel TF; public XYZ() { TF = new JLabel("test"); this.add(TF); } public void actionPerformed(ActionEvent e) { TF.setText("TEST"); } } [/PHP] Da darf es keine NullPointerException geben. Zitieren
Commander_COM Geschrieben 26. Mai 2005 Autor Geschrieben 26. Mai 2005 genau das gleiche wie vorher: Zitieren
Krain Geschrieben 27. Mai 2005 Geschrieben 27. Mai 2005 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Test extends JFrame implements ActionListener{ private JButton press; private JLabel text; private int count = 1; public static void main(String[] args) { new Test(); } public Test() { super("test"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); press = new JButton("Drück mich"); press.addActionListener(this); text = new JLabel(new Integer(count).toString()); this.getContentPane().add(text,BorderLayout.CENTER); this.getContentPane().add(press,BorderLayout.SOUTH); this.pack(); this.setVisible(true); } public void actionPerformed(ActionEvent arg0) { text.setText(new Integer(++count).toString()); } } [/PHP] Also dies funzt bei mir ohne Probleme... Sicher, dass die NullPointerException vom Label kommt? Zitieren
Commander_COM Geschrieben 27. Mai 2005 Autor Geschrieben 27. Mai 2005 Zeile 111: TF2.setText("Optimaler Weg: "+ Calc.optWegToString()+ " Dauer: " + Calc.optWegDauer()); Calc.... funzt eigentlich Zitieren
Krain Geschrieben 27. Mai 2005 Geschrieben 27. Mai 2005 Mach mal vor diesem Statement ein System.out.println(TF2.getText()) rein. Wenn das Label wirklich nicht mehr vorhanden wäre dürfte dort schon eine NullpointerException auftreten. Zitieren
Commander_COM Geschrieben 27. Mai 2005 Autor Geschrieben 27. Mai 2005 ja, so ist das... Null PointerExept. auch bei diesem Versuch was ist da nur los? ich hab echt keine ahnung Zitieren
Commander_COM Geschrieben 29. Mai 2005 Autor Geschrieben 29. Mai 2005 hat niemand eine Idee? Zitieren
Metua Geschrieben 30. Mai 2005 Geschrieben 30. Mai 2005 hi, ich kann nicht so richtig erkennen woher die nullpointer exception kommt, aber vielleicht stellst du dein tf erstmal von awt nach swing um. ich glaube zwar nicht das es daran liegt, aber wer weiss... ansonsten kannst du ja die veränderungen in einer getter-setter Klasse speichern und den String der im textfeld erscheinen soll dort auslesen und ins tf setzten. ich gucks mir nochmal an, aber mehr fällt mir jetzt nicht ein... :confused: ps.: wenn du das gui sowieso im konstruktor baust, dann bau doch dort auch das Label ein... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.