Swing JTextFeld Wert in anderer Klasse aufrufen

Status
Nicht offen für weitere Antworten.

maxth

Aktives Mitglied
Hallo,

ich hab ein Problem, ich hab in einem Fenster ein Textfeld und ein Button.
Das Textfeld soll ein Wert über die Eingabe bekommen, und mit dem Button speichern.

Diesen Wert würde ich gerne in einer anderen Klasse verwenden.

Wie könnte dies aussehen?


Fenster KLasse mit JTextField und JButton
klasse NeueWohnung

Code:
 twname = new javax.swing.JTextField();

Code:
jButton1.setText("Speichern");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
                
                
                String name = twname.getText();
                
            }
        });


Andere Klasse die den Textfeldinhalt verwenden möchte
Klasse Speichern

Code:
NeueWohnung nw = new NeueWohnung();

System.out.println("Wohnungsname : " + nw.twname.getText());

Vielen Dank
 
Wenn Du so drauf zugreifen willst musst Du die Variable twname public machen.
Besser wäre Du erstellst in der Klasse NeueWohnung eine Methode
public String getTWNameTest(), die den Inhalt zurückgibt.
 
ahh okay,

also

Code:
public String getTWNameTest(){
return twname.getText();
}

meinst du das mit der Methode so?

wie sieht das denn mit dem Button aus.

Implementier ich diese Methode?

kannst du mir da helfen.?
 
das ist mein Button:

Code:
 jButton1.setText("Speichern");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
                
                
                 getTWNameTest();
                
                
 
            }
        });

und das passiert in der Klasse wo ich es aufrufen möchte

Code:
 String name = nw.getTWNameTest();

			System.out.println(name);
 
das dachte ich mir auch, aber irgendwie passiert nichts, und die konsole bildet mir auch nichts ab.
es funktioniert noch nicht.

Code:
   jButton1.setText("Speichern");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
                
                
                 getTWNameTest();
               
                
            }
        });

andere Klasse

Code:
 NeueWohnung nw = new NeueWohnung();

Code:
 public void Trans(){
		 
		 String name = nw.getTWNameTest();

			System.out.println(name);
		
	 }
 
Hab noch was übersehen:
Der Methodenaufruf im ActionListener bzw. in der actionPerfomed nutzt nichs, da ja quasi nur der Inhalt des Textfeldes ausgelesen wird. Was soll denn da genau passieren bzw. kannst Du mal den Code aufs Wesentliche reduziert posten?
 
ja..an dieser Stelle bin ich mir nicht sicher,
also ich hab 2 klassen, 1 klassen besitzt das Fenster mit Textfeld und Button.
Das Textfeld wird beschrieben, und mit speichern soll er mir ein Wert in eine andere Klasse übergeben. In dieser klasse soll später der Wert in eine Datenbanktabelle geschrieben werden. Ich kenne mich auch mit buttons auch nicht so gut aus.

Vielleicht hast du eine idee.
 
Eine mögliche Vorgehensweise wäre, dass Du in der Klasse welche den Wert speichern soll eine Methode erstellst die den String entgegennehmen kann. In Deiner Fensterklasse mit dem TextFeld muss dann diese Klasse bzw. ein Object dieser Klasse bekannt sein und in der ActionMethode übergibst Du dann den Inhalt an speichernde Klasse. In etwa so:
Java:
class SpeicherKlasse {
private String value;
...
    public void setValue(String value) {
        this.value = value;
    }
....
}

class KlasseMitTextFeld {
...
    SpeicherKlasse sk = new SpeicherKlasse();
...
    public void actionPerformed(java.awt.event.ActionEvent evt) {
        sk.setValue(textFeld.getText());            
    }
}
 
irgendwie funktioniert das so nicht, er wirft bei mir fehlermeldungen.
vielleicht hab ich es auch falsch eingebunden.

Meine Klasse ist sehr größ oder zumindestens die Gui von der klasse mit dem textfeld

Was binde ich den Button, denn es soll ja nur was passierten wenn dieser gedrückt wurde?????:L
 
Zuletzt bearbeitet:
irgendwie funktioniert das so nicht, er wirft bei mir fehlermeldungen
Fehlermeldungen enthalten wichtige Informationen --> bitte hier posten.

Um mich ein bisschen von meiner Arbeit abzulenken habe ich hier mal ein kurzes Bsp. zusammen gebastelt. Entsprechend Deiner Anforderungen modifizieren und ausprobieren.
Java:
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
 
public class KlasseMitTextFeld extends JFrame {
	private SpeicherKlasse speicherKlasse = new SpeicherKlasse();
	
	private JTextField textField;
	private JButton transferButton;
	private JButton saveButton;
	
	public KlasseMitTextFeld() {
		this.setLayout(new GridLayout(3, 1));
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setBounds(0, 0, 300, 200);
		this.setLocationRelativeTo(null);
		
		textField = new JTextField();
		
		transferButton = new JButton("Transfer Inhalt");
		transferButton.addActionListener(new ActionListener() {
		    public void actionPerformed(java.awt.event.ActionEvent evt) {
		    	speicherKlasse.setValue(textField.getText());            
		    }
		});
		
		saveButton = new JButton("Speichern");
		saveButton.addActionListener(new ActionListener() {
		    public void actionPerformed(java.awt.event.ActionEvent evt) {
		    	speicherKlasse.saveValue();            
		    }
		});
		
		this.getContentPane().add(textField);
		this.getContentPane().add(transferButton);
		this.getContentPane().add(saveButton);
	}

	public static void main(String[] args) {
		new KlasseMitTextFeld().setVisible(true);
	}
}

class SpeicherKlasse {
	private String value = "mir wurde noch nichts übergeben";
	
	public void setValue(String value) {
		this.value = value;
	}
	
	public void saveValue() {
		System.out.println(this.getClass().getName() + " speichert den Wert: " + value);	
	}
}
 
Vielen Dank geht Super,


wie kann ich die beiden Buttons zusammen fassen?

so dass ich statt 2 nur 1 Button hab?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben