Veröffentlicht 26. Mai 200520 j 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!?!
26. Mai 200520 j Kannst du mal etwas Code posten... damit man mal kurz rein schauen kann? Bei mir funktioniert es nämlich. gruss markus
26. Mai 200520 j 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(); } */ }
26. Mai 200520 j 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...
26. Mai 200520 j 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?
26. Mai 200520 j 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.
27. Mai 200520 j 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?
27. Mai 200520 j Zeile 111: TF2.setText("Optimaler Weg: "+ Calc.optWegToString()+ " Dauer: " + Calc.optWegDauer()); Calc.... funzt eigentlich
27. Mai 200520 j 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.
27. Mai 200520 j ja, so ist das... Null PointerExept. auch bei diesem Versuch was ist da nur los? ich hab echt keine ahnung
30. Mai 200520 j 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...
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.