Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Textfield aktualisieren

Empfohlene Antworten

Veröffentlicht

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!?!

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(); }

	 */

}

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...

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?

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.

genau das gleiche wie vorher:

fehler.JPG


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?

Zeile 111:

TF2.setText("Optimaler Weg: "+ Calc.optWegToString()+ " Dauer: " + Calc.optWegDauer());

Calc.... funzt eigentlich

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.

ja, so ist das...

Null PointerExept. auch bei diesem Versuch was ist da nur los? ich hab echt keine ahnung

hat niemand eine Idee?

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.