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.

Zugriff auf ein JTextField aus einer anderen Klasse

Empfohlene Antworten

Veröffentlicht

Hallo,

ich möchte gerne den Text eines JTextField's auslesen, komme da aber nicht dran und weiss nicht wie ich das machen soll. Ich habe den Quelltext mal so gekürzt das nur das wichigste da ist.


1. Klasse:

public class Start{


	public static Gui Fenster;

	public static Abschicken abschicken;


	public static void main (String[] args) {


		Fenster = new Gui();

		abschicken = new Abschicken(Fenster);

		Fenster.setVisible(true);

		}

}


2. Klasse:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;


public class Gui extends JFrame

{

	public JTextField bezugsnummer;


	public Gui()

	{

	 	getContentPane().setLayout(null);

	 	bezugsnummer = new JTextField(20);

                bezugsnummer.setBounds(200,50,100,20);

	 	bezugsnummer.setText("Test");

	 	getContentPane().add(bezugsnummer);


}


     // Methode setVisible wird überschrieben damit das Frame maximiert startet

     public void setVisible(boolean in) {

      super.setVisible(in); 

      this.setExtendedState(Frame.MAXIMIZED_BOTH); 

     } 

}


3.Klasse:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;


public class Abschicken implements ActionListener{



public Abschicken(JFrame Fenster){


		JButton abschicken = new JButton("Abschicken");

		abschicken.setBounds(10,10,200,20);

		abschicken.addActionListener(this);

		Fenster.getContentPane().add(abschicken);

		}


		public void actionPerformed(ActionEvent e)

	     {

	   		if (e.getActionCommand().equals("Abschicken")){

	     	System.out.println(Fenster.bezugsnummer.getText());

	     	}

	     }

}

In der Klasse 3 ist das Problem in der System.out.println Zeile....kann ich an den Inhalt des Feldes irgendwie drankommen? :rolleyes:

Gruß,

Chriz

Moin,

was für eine Fehlermeldung bekommst du denn? Kannst du den Stacktrace mal posten? So auf den ersten Blick kann ich jetzt auch nichts entdecken...

Gruß, Peter

Hi,

tue dir und uns einen gefallen und schreibe Variablen klein. ;)

Zum Problem:

Wenn du die Oberklasse JFrame übergibst ist bezugsnummer nicht ansprechbar, übergebe deine Gui oder caste.

Um auf ein im Konstruktor übergebenes Object in weiteren Methode zugreifen zu können, musst du lokal die Referenz speichern.


import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;


public class Abschicken implements ActionListener {


	private Gui fenster;


	public Abschicken(Gui fenster) {

		this.fenster = fenster;

		JButton abschicken = new JButton("Abschicken");

		abschicken.setBounds(10, 10, 200, 20);

		abschicken.addActionListener(this);

		fenster.getContentPane().add(abschicken);

	}

	public void actionPerformed(ActionEvent e) {

		if (e.getActionCommand().equals("Abschicken")) {

			System.out.println(fenster.bezugsnummer.getText());

		}

	}

}

Gruß Jaraz

vielen dank, genau so klappt es ... die Variablen sind nun auch alle geändert und klein geschrieben ;)

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.