JTextField

Status
Nicht offen für weitere Antworten.

BlubBlub

Bekanntes Mitglied
hi ich wollt fragen kann man die eingabe beim JTextField nur mit der Enter-Taste bestätigen oder könnte ich sie auch über das drücken eines JButtons bestätigen lassen?
 

Schandro

Top Contributor
was meinst du mit "bestätigen lassen"? Das die ActionListener, die auf das JTextField geaddet wurden, aufgerufen werden?

Adde doch einfach denselben ActionListener, den du an das JTextField geaddet hast, zusätzlich an den JButton.
 

BlubBlub

Bekanntes Mitglied
hmm , also ich hab zwei JTextfields und ein JButton ... und ich wollte dass der benutzen in den beiden JTextFields int Werte eingeben kann. und dann wollte ich dass wenn der Benutzer den JButton drückt die int Wert an die entrsprechenden Varialben gesendet werden also an int eingegebeneKraft und int eingegebenerWinkel und zwar ohne dass ich enter drücken muss bei den JTextFields. wie krieg ich das hin?

Java:
class SteuerPanel extends JPanel implements ActionListener, Runnable
{
	private JButton start = new JButton("Start");
	private JTextField kraftEingabe = new JTextField("50");
	private JLabel kraft = new JLabel("Kraft:");
	private JTextField  winkelEingabe = new JTextField("45");
	private JLabel winkel = new JLabel("Winkel:");
	private int eingegebeneKraft = 50;
	private int eingegebenerWinkel = 45;
	private VersuchePanel versuchsPanel;
	private KatapultPanel katapultArea;
	private boolean fehler = false;
		
	SteuerPanel(VersuchePanel versuchsPanel, KatapultPanel katapultArea)
	{
		this.versuchsPanel = versuchsPanel;
		this.katapultArea = katapultArea;
		setLayout(new GridLayout(1, 5));
		
		add(kraft);
		add(kraftEingabe);
		add(winkel);
		add(winkelEingabe);
		add(start);
			
		kraftEingabe.addActionListener(this);
		kraftEingabe.setActionCommand("Newton");
		kraftEingabe.selectAll();
		winkelEingabe.addActionListener(this);
		winkelEingabe.setActionCommand("Grad");
		winkelEingabe.selectAll();
		start.addActionListener(this);
		start.setActionCommand("StartButton");
	}
	
	public void run()
	{
		for(int x = 1; x <= 825; x++)
		{	
			try 
			{ 
				Thread.sleep(5); 
			}
			catch(InterruptedException ie) {}
	         
			katapultArea.setX();
			katapultArea.repaint();
		}
	}
		
	public void actionPerformed(ActionEvent e)
	{
		 if(e.getActionCommand().equals("StartButton"))
		 {
			 
			if(!fehler)
			{	
				start.setEnabled(false);
				kraftEingabe.setEditable(false); 
				winkelEingabe.setEditable(false); 
				versuchsPanel.set(versuchsPanel.get() - 1);
			
				new Thread(this).start();
			}
			else 
			{
				kraftEingabe.setText("Korrigiere die Eingabe du Troll!");
				winkelEingabe.setText("Korrigiere die Eingabe du Troll!");
			}
		 }
		 else
		{
			 String benutzerEingabe = ((JTextField)e.getSource()).getText(); 
			 
			 try
			 {
				 if(e.getActionCommand().equals("Newton"))
					 eingegebeneKraft = Integer.parseInt(benutzerEingabe);
				 else if(e.getActionCommand().equals("Grad"))
					 eingegebenerWinkel = Integer.parseInt(benutzerEingabe);
				 
				 if(!kraftEingabe.getText().equals("korrigiere die Eingabe du Troll!") && !winkelEingabe.getText().equals("korrigiere die Eingabe du Troll!")) 
					 fehler = false;
			 }
			 catch(NumberFormatException n)
			 {
				 if(e.getActionCommand().equals("Newton"))
					 kraftEingabe.setText("Fehler - Bitte Erneute Eingabe!");
				 else winkelEingabe.setText("Fehler - Bitte Erneute Eingabe!");
				 
				 fehler = true;
			 }
		}
	}
}
 

Schandro

Top Contributor
Indem du das verändern der beiden int's immer machst wenn actionPerformed aufgerufen wird. Dahinter prüfst du dann ob der JButton gedrückt wurde und machst gegebenfalls dem sein Zeug.
 

BlubBlub

Bekanntes Mitglied
der benutzer soll ja einen wert ins ertste jtextfield eingeben und einen zweiten wert ins zweite jtextfield eingeben. wenn ich nun den jbutton klicke sollen die werte an die entsprechenden variablen geschickt werden.

wenn ich den jbutton klicke dann kann ich über
e.getActionCommand().equals("StartButton")
prüfen obs der jbutton war oder nicht und entsprechend handeln.

nehmen wir nun an der jbutton wurde geklickt und zuvor hat der benutzer werte in die jtextfields eingetippt . nun weiß das programm nicht
dass der benutzer in den beiden jtextfields informationen eintetippt hat (es wird ja
nicht die enter taste gedrückt nachdem die infos in die jtextfields eingetippt wurden)
und wie kann das programm an die informationen gelangen die in den jeweiligen jtextfields drin sind (wie gesagt die enter taste wurde nachdem eintippen des textes in die textfields nicht betätigt) , weil sobald ich den jbutton betätige komme ich mit

((JTextField)e.getSource()).getText()

nicht mehr an die infos ran, weil das e sich ja nur noch auf den jbutton bezieht, in dem e ist also nur die info gespeichert dass ich den jbutton gedrückt habe aber dort ist nicht der text gespeichert der in den beiden jtextfields eingetippt wurde. oder täusch ich mich da? und wenn ja wie wäre denn eine möglich lösung.
 

Schandro

Top Contributor
^^ du hast doch die Membervariablen kraftEingabe und winkelEingabe.
 
Zuletzt bearbeitet:

BlubBlub

Bekanntes Mitglied
ich hab den code ja nicht rauskopiert sondern selbst geschrieben.
hab aber mit GUIs erst grad angefangen mich zu beschäftigen.

ich glaub wir reden grad aneinander vorbei.
weil wenn ich als benutzer nun in die jtextfields die werte eingebe und kein enter drücke, dann wird an die membervariablen ja die information ja erst gar nicht geschickt.

und wenn ich nun auf den startbutton klicke dann werden die befehle in diesem block ausgeführt

Java:
if(e.getActionCommand().equals("StartButton"))
		 {
			 
			if(!fehler)
			{	
				start.setEnabled(false);
				kraftEingabe.setEditable(false); 
				winkelEingabe.setEditable(false); 
				versuchsPanel.set(versuchsPanel.get() - 1);
			
				new Thread(this).start();
			}
			else 
			{
				kraftEingabe.setText("Korrigiere die Eingabe du Troll!");
				winkelEingabe.setText("Korrigiere die Eingabe du Troll!");
			}
 

Schandro

Top Contributor
Ich zitier mich mal selber:
Indem du das verändern der beiden int's immer machst wenn actionPerformed aufgerufen wird. Dahinter prüfst du dann ob der JButton gedrückt wurde und machst gegebenfalls dem sein Zeug.
 

BlubBlub

Bekanntes Mitglied
hehe ich seh schon das wird wohl etwas komplizierter werden zu erläutern warum ich das nicht hinkrieg, was daran auch liegt dass ich vielleicht ein paar verständnisfehler im bezug auf GUIs hab.

also du sagst ich soll die beiden ints verändern wenn actionperformed aufgerufen wird und der jbutton gedrückt ist.

also gut. ich gebe zuerst einen wert ins erste jtextfield ein dann einen wert ins zweite jtextfield, drücker aber kein enter. das heißt actionperformed wird noch nicht aufgerufen und die membervarialben haben noch keinen neuen wert zugewiesen bekommen.
so nun klick ich auf den jbutton also wird actionperformerd aufgerufen und erhält das e objekt. in dem e objekt sind dann irgendwelche sachen gespeichert darunter wer die methode actionpeformed aufgerufen hat.

mit e.getActionCommand() erfahr ich dann dass es der jbutton war der die methode auferufen hat.

würd ich jetzt ((JTextField)e.getSource()).getText() ausführen dann würde mir ja kein text zurückgegeben werden weil das e bezieht sich ja auf den jbutton da es von diesem ausgelöst wurde und der button keinen text beinhaltet. (nehm ich zumindest an, bin mir aber aufgrund meiner wenigen erfahrung mit GUIs nicht sicher dass es so ist)

ich bräuchte jetzt aber irgendsowas wie ((JTextField)e.getSource()).getTextVomErstenJTextfield() und ((JTextField)e.getSource()).getTextVomZweitenJTextfield() um dann damit die beiden membervariabeln setzen zu können.

beim drücken des Jbuttons müßten mir aber auch zuvor die variablen im e objekt gespeichert werden irgendwie. normalerweise geschieht dies durch das enter drücken nachdem man ins jeweilige jtextfiel geschrieben hat, weil sobald man enter drückt wird actionperformed aufgerufen und dann kann ich mit e.getActionCommand() erfahren wer das aufgerufen hat ud mit (JTextField)e.getSource()).getText() an den text kommen. nur wie gesagt will ich das nicht auf diese weise machen sondern, alles in einem schritt mit dem jbutton erledigen. ich hoffe ich konnte das jetzt verständlich erläutern wo ich nicht weiter komme.
 
Zuletzt bearbeitet:

Schandro

Top Contributor
Du hast deine 3 GUI Elemente als Membervariable gespeichert. Deswegen kannst du IMMER auf sie zugreifen, du brauchst dafür nicht e.getSource() benutzen!

Und genau das machst du bereits ca. 10 mal in deinem Code innerhalb der actionPerformed-Methode. Deswegen meine Vermutung das du diesen Code nicht selber geschrieben hast. Kann mir aber auch egal sein^^
 
Zuletzt bearbeitet:

Schandro

Top Contributor
Ich hab grad mal einen sauberen Beispielcode geschrieben.
Java:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class XXX{ // kein direktes Implementieren der benötigten Listener bzw. Runnable! Oder  I S T  dein SteuerPanel ein ActionListener? Nein. Außerdem kannn man so mehrere ActionListeners haben....

	public static void main(String[] args){
		new XXX();}


	private JFrame window = new JFrame();
	private JPanel panel = new JPanel();


	private String input1;
	private String input2;

	private JTextField input1Field;
	private JTextField input2Field;
	private JButton startButton;

	public XXX(){
		window.setBounds(100,100,300,250);

		window.add(panel);
		panel.setLayout(new GridLayout(3,1));

		panel.add(input1Field = new JTextField());
		panel.add(input2Field = new JTextField());
		panel.add(startButton = new JButton("start"));

		// Die GUI-Elemente bekommen VERSCHIEDENE ActionListener zugeweisen. Dadurch braucht man innerhalb der Listener nicht überprüfen wer das Event ausgelöst hat
		input1Field.addActionListener(inputFieldListener);
		input2Field.addActionListener(inputFieldListener);

		startButton.addActionListener(buttonListener);

		SwingUtilities.invokeLater(new Runnable() { // Die GUI sollte immer im Event Dispatcher Thread gestartet werden. Das geschieht über SwingUtilities.invokeLater
			public void run() {
				window.setVisible(true);
			}
		});
	}

	private ActionListener inputFieldListener = new ActionListener(){
		public void actionPerformed(ActionEvent event){
			inheritInput();
		}
	};


	private ActionListener buttonListener = new ActionListener(){
		public void actionPerformed(ActionEvent event){
			inheritInput();

			// macht irgendwas tolles, z.b. en Thread starten
			new Thread(new Runnable(){
				public void run(){
					// kann hier auf input1 und input2 zugreifen
				}
			}).start();
		}
	};
	
	private void inheritInput(){
		input1 = input1Field.getText();
		input2 = input2Field.getText();

		// Debug-Ausgaben
		System.out.println("input1 ist jetzt: "+input1);
		System.out.println("input2 ist jetzt: "+input2);
	}

}
Die JTextFields haben jetzt einen anderen ActionListener als der Button. Damit ich den Code zum übernehmen von dem, was in den Textfeldern drinnsteht, nicht doppelt schreiben muss, hab ichs in eine Methode ausgelagert ("inheritInput"), die von beiden Listenern aus aufgerufen wird.
 
Zuletzt bearbeitet:

BlubBlub

Bekanntes Mitglied
hey erstmal vielen dank für die geduld und die hilfe.
was das mit dem code nicht selber schreiben angeht, ja da hast du in gewissermaße doch recht,
das mit dem JTextField und mit dem actionperformed usw hab ich aus einer beispielausgabe aus der vorlesung und habs versucht an mein programm anzupassen.ich hab gedacht man programmiert dass in etwa immer so, so schablonenmäßig quasi, was sich aber als falsch herausgestellt hat.
so wie du das gemacht hast find ich aber viel besser und nun versteh ich auch besser wie das alles funktioniert.
musste mir zwar nochmal durchlesen was innere klassen sind und wie sie so funktionieren, weil wir das nur kurz angeschnitten hatten das thema und niemals in einer übungsaufgabe angewendet haben, aber das prinzip ist eigentlich ganz cool und praktisch muss ich sagen.
mal schauen ob ichs schaffe das programm nun so zu schreiben wie ich will das es funktioniert. wenns fertig ist werd ichs hier posten.
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
I JTextfield senden über Enter AWT, Swing, JavaFX & SWT 1
H Swing Wie Fokus von JTextField entfernen? AWT, Swing, JavaFX & SWT 9
M mehrere jTextField untereinander AWT, Swing, JavaFX & SWT 1
G JTextField Änderungen überprüfen AWT, Swing, JavaFX & SWT 4
B JTextField in Panel positionieren AWT, Swing, JavaFX & SWT 1
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
R Swing JTextField nicht-kopierbarer Text AWT, Swing, JavaFX & SWT 1
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
A Swing Datei lässt sich zwar speichern, aber nicht laden (Inhalt im JTextField anzeigen) AWT, Swing, JavaFX & SWT 18
A Fenster genau unterhalb von JTextField anzeigen AWT, Swing, JavaFX & SWT 1
xYurisha Gui Focus von JTextField weglenken AWT, Swing, JavaFX & SWT 6
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
G JTextField Eingabe in DB speichern AWT, Swing, JavaFX & SWT 68
C JTextField Inhalt mit Maus selektieren wenn disabled AWT, Swing, JavaFX & SWT 2
R jTextField Eingabe überprüfen AWT, Swing, JavaFX & SWT 2
ralfb1105 Swing Wert in JTextField wird falsch ausgegeben AWT, Swing, JavaFX & SWT 2
D Inhalt von JTextField in MySQL speichern. Wie ? AWT, Swing, JavaFX & SWT 1
D Platzierung von JTextfield in JPanel AWT, Swing, JavaFX & SWT 3
J 100% CPU Last mit JTextField AWT, Swing, JavaFX & SWT 2
U Swing JTextField aus dem Editmodus nehmen AWT, Swing, JavaFX & SWT 1
Q-bert JTextField per Mausklick einfügen AWT, Swing, JavaFX & SWT 3
L JTextField erscheint erst nach Veränderung der Framegröße AWT, Swing, JavaFX & SWT 5
BobbGott durchsichtiges JTextField mit Hintergrund AWT, Swing, JavaFX & SWT 12
L Swing JTextField nicht sichtbar AWT, Swing, JavaFX & SWT 1
Soloeco Swing JTextField auslesen Klassen übergreifend AWT, Swing, JavaFX & SWT 16
N Swing Abfrage durch JTextField nach Button betätigung AWT, Swing, JavaFX & SWT 3
J JTextfield automatisch aus zweiter Klasse aktualisieren AWT, Swing, JavaFX & SWT 5
T ActionListener nimmt JTextField nicht mehr an. AWT, Swing, JavaFX & SWT 2
N Swing Jtextfield und Ausgabe von Wärungsbeträgen AWT, Swing, JavaFX & SWT 3
beatles Swing JTextField - Game Status aus Array anzeigen AWT, Swing, JavaFX & SWT 3
blazingblade komischerweise probleme mit jtextfield.gettext() AWT, Swing, JavaFX & SWT 9
KaffeeFan mehrere JTextField durchlaufen AWT, Swing, JavaFX & SWT 4
T JTextField Array im JPanel wird nicht komplett angezeigt AWT, Swing, JavaFX & SWT 7
K Swing unterschied JTextField und JLabel AWT, Swing, JavaFX & SWT 7
Tausendsassa Text changed event handler jTextField AWT, Swing, JavaFX & SWT 3
B jTextfield Übergabe des Strings AWT, Swing, JavaFX & SWT 16
P JTextField unsichtbar machen AWT, Swing, JavaFX & SWT 2
G .txt-Datei einlesen /formatieren in JTextfield ?? AWT, Swing, JavaFX & SWT 8
C Swing JTextField Funktion zuweisen - Löschen von Buchstaben/Sonderzeichen AWT, Swing, JavaFX & SWT 6
S JTextField parameter unveränderlich AWT, Swing, JavaFX & SWT 9
T bekomme keinen Focus auf JTextField AWT, Swing, JavaFX & SWT 3
N Cursor im JTextField AWT, Swing, JavaFX & SWT 6
T Swing NullPointerException beim auslesen von jTextField - Anfänger! AWT, Swing, JavaFX & SWT 3
A JTextField und JButtons AWT, Swing, JavaFX & SWT 2
T jTextField mit String befüllen AWT, Swing, JavaFX & SWT 1
O JTextfield wird über'drawed'.. AWT, Swing, JavaFX & SWT 6
M Swing JtextField Panel in ander Panel aufrufen AWT, Swing, JavaFX & SWT 0
S Bekomme bein Buttonklick das Jtextfield nicht ausgegeben AWT, Swing, JavaFX & SWT 8
Seikuassi Swing JTextField nimmt kein Einfügen (Strg+V) an AWT, Swing, JavaFX & SWT 4
Z Fenster leer, wenn ich ein JTextField erzeuge AWT, Swing, JavaFX & SWT 3
M Swing JTextField getText Mehtode übergeben in eine Klasse zu einer Rechnung AWT, Swing, JavaFX & SWT 1
B Swing JTextField mit Bildschirmauflösung skalieren lassen. AWT, Swing, JavaFX & SWT 4
C Geloest: JTextfield: Titel automatisch entfernen, sobald Text eingegeben wird AWT, Swing, JavaFX & SWT 1
T Internes Event-handling in TextField/JTextField AWT, Swing, JavaFX & SWT 2
T AWT JTextfield verschwindet AWT, Swing, JavaFX & SWT 10
dat_vin KeyEvent jTextField AWT, Swing, JavaFX & SWT 12
C JTextfield ohne Enter feuern AWT, Swing, JavaFX & SWT 8
W Swing JTextField nur für Integer AWT, Swing, JavaFX & SWT 2
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
O JTextfield und JComboBox Wert in SQL Database speichern AWT, Swing, JavaFX & SWT 4
F Swing JTextField (unbeschriebbar machen) AWT, Swing, JavaFX & SWT 12
W JTextfield - Wert lässt sich nicht setzen AWT, Swing, JavaFX & SWT 3
TheJavaKid JTextField: Reine Domain herausfiltern, sonst Inhalt löschen AWT, Swing, JavaFX & SWT 1
R Swing User tippt in unsichtbares JTextField AWT, Swing, JavaFX & SWT 3
F Swing JTextField in JList (Funktion beibehalten) AWT, Swing, JavaFX & SWT 2
A Swing JLabel/JTextField Inhalt mit JSlider verändern AWT, Swing, JavaFX & SWT 12
U Swing JTextField zur Laufzeit auf Eingaben prüfen AWT, Swing, JavaFX & SWT 0
X Swing JTextField AWT, Swing, JavaFX & SWT 4
M Swing JTextField nicht ausfüllbar AWT, Swing, JavaFX & SWT 8
C Problem mit JTextField AWT, Swing, JavaFX & SWT 4
S Swing WYSIWYG JTextField AWT, Swing, JavaFX & SWT 2
vodkaz JTextField && Strings AWT, Swing, JavaFX & SWT 2
R Swing JScrollBar mit JTextField koppeln AWT, Swing, JavaFX & SWT 3
A Swing 2 JSlider verknüpfen und mit einem JTextField vergleichen, dann Ausgabe AWT, Swing, JavaFX & SWT 5
X JTextField Ausgabe klappt nicht AWT, Swing, JavaFX & SWT 4
S Swing Verzeichnis/Datei-Pfad in JTextField schreiben AWT, Swing, JavaFX & SWT 2
R Swing JTextField getText() liefert leeren String AWT, Swing, JavaFX & SWT 6
J Mausfarbe ändern JTextField AWT, Swing, JavaFX & SWT 6
S Anordnung von GUI-Komponenten mit LayouManger (Problem beim anzeigen von JTextField) AWT, Swing, JavaFX & SWT 5
A editable JTextField & setText AWT, Swing, JavaFX & SWT 2
O Swing JTextField Sync View -> Model AWT, Swing, JavaFX & SWT 3
M JTextField gibt beim auslesen null aus AWT, Swing, JavaFX & SWT 9
K JTextField mit Standardtext AWT, Swing, JavaFX & SWT 3
F Swing JTextfield Beispieltext soll nach Klick verschwinden AWT, Swing, JavaFX & SWT 3
TheJavaKid DocumentListener soll Text in JTextField ändern AWT, Swing, JavaFX & SWT 4
I Swing JTextField ausblenden -? AWT, Swing, JavaFX & SWT 6
0 Swing JTextField - Position ? AWT, Swing, JavaFX & SWT 2
L Button über/auf JTextField AWT, Swing, JavaFX & SWT 5
vandread Swing Probleme mit jTextField im zusammenspiel mit einem Einblendeffekt (inkl. KSKB) AWT, Swing, JavaFX & SWT 6
M Swing jTextfield und PlainDocument AWT, Swing, JavaFX & SWT 18
D JTextField über ein Game AWT, Swing, JavaFX & SWT 11
A Swing JTextField durch einen JButton leeren AWT, Swing, JavaFX & SWT 15
Kaniee Swing Woher bekommt JTextField die Eingaben? AWT, Swing, JavaFX & SWT 2
M JTextField gesperrt nach erster Benutzung... AWT, Swing, JavaFX & SWT 4
C JTextField KeyListener AWT, Swing, JavaFX & SWT 6
R JTextField mit abgerundeten Ecken - Geht über Grenze hinaus AWT, Swing, JavaFX & SWT 4
R JTextField Eingabefeld innerhalb verschieben AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben