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.

JTextField über einen Button auslesen

Empfohlene Antworten

Veröffentlicht

Ich habe ein Problem und zwar:

-wie kann man 3 JTextFields auslesen wenn der Action-Event von einem Button kommt (von den JTextFields soll kein Action-Event ausgehen, so wie z.B. [Enter])

und wie übergebe ich dann die 3 Strings an eine weitere Klasse??

cu Peeter

PS: Helft mir, da ich kurz vorm verzweifeln bin!!!

Hi,

ich denke so kannst du die JTextFields mit .getText() auslesen.


public void jButton1_ActionEvents()

{

	String a = ivjJTextField1.getText();

	String b = ivjJTextField2.getText();

	String c = ivjJTextField3.getText();



	//so kannst du es an eine weitere Klasse geben.	

	neueKlasse nk = new neueKlasse(a, b, c)

	return;

}

Dazu musst du dir einenen eigenen Konstruktor schreiben. Hab mal eine Beispielklasse geschrieben das ich oben aufrufe.

class neueKlasse

{

	public neueKlasse()

	{

		super();

	}

	public neueKlasse(String aa, String bb, String cc)

	{

		super();

	}

}


Hoffe ich konnte dir helfen

MFG

DANKE!!!!

Jetzt hab ich nur noch ein Problem und zwar liegt es in den TextFields!!

< String a = ivjJTextField1.getText();

< String b = ivjJTextField2.getText();

< String c = ivjJTextField3.getText();

Ich hab die Textfelder ja schon vorher initialisiert(in dem Konstruktor für meine Oberfläche!!!

Hier mal den Beispielcode!!

{

.

.

.

JButton button2=new JButton("Button1");

JButton buttonS=new JButton("Button2");

JLabel label;

JTextField field1=new JTextField(20);

JTextField field2=new JTextField(20);

JTextField field3=new JTextField(20);

Container cp=getContentPane();

cp.setLayout(new FlowLayout(1));

label=new JLabel("label 1");

cp.add(label);

cp.add(field1);

label=new JLabel("label 2");

cp.add(label);

cp.add(field2);

label=new JLabel("label 3");

cp.add(label);

cp.add(field3);

cp.add(buttonS);

button2.addActionListener(new BuLi());

cp.add(button2);

.

.

.

}

// Sobald der Button angeklickt wird soll er den Inhalt aus den 3 TextFeldern auslesen und übergeben!!

public void buttonS_actionEvents()

{

String string1=field1.getText();

String string2=field2.getText();

String string3=field3.getText();

BuRe buttonrechts=new BuRe(string1,string2,string3);

}

Und dann bringt er mir immer diese Fehlermeldung:

symbol : variable field3

location: class Oberfl

String portE=field3.getText();

^

Wo liegt der Fehler??(Ich weiß, das man die "fields" so nicht übergeben kann!!!)

MfG

Peeter :confused: :confused:

Hi,

das andere von der Fehlermeldung wäre noch interessanter gewesen (was für eine Exception Du genau bekommst), aber ich denke, Du hast die Variable field3 nicht als Klassen-Eigenschaft definiert und daher darfst Du sie nicht global verwenden.

Also direkt nach deiner Klassendefinition

JTextField field1,field2,field3;

Und schon darfst Du zugreifen.

MfG Markus

DANKE esrt mal!!!!!

So, jetzt hab ich ne konkret krasse Exception!!!

Exception occurred during event dispatching:

java.lang.NullPointerException

at Oberfl.actionPerformed(Programm.java:138)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1450)

at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1504)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:378)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:216)

at java.awt.Component.processMouseEvent(Component.java:3717)

at java.awt.Component.processEvent(Component.java:3546)

at java.awt.Container.processEvent(Container.java:1164)

at java.awt.Component.dispatchEventImpl(Component.java:2595)

at java.awt.Container.dispatchEventImpl(Container.java:1213)

at java.awt.Component.dispatchEvent(Component.java:2499)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)

at java.awt.Container.dispatchEventImpl(Container.java:1200)

at java.awt.Window.dispatchEventImpl(Window.java:912)

at java.awt.Component.dispatchEvent(Component.java:2499)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:319)

at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:103)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:84)

So, was nun????

Ich glaube es hat etwas damit zu tun!!!

public void buttonS_ActionEvents()

{

String host = field1.getText();

String portA = field2.getText();

String portE = field3.getText();

BuRe buttonrechts=new BuRe(host,portA,portE);

return;

}

WAS NUN???!!!*seufz*

HAT SICH SCHON ERLEDIGT!!!!!!

Ich hab´s rausbekommen!!!!!

:-)

MfG

Peeter

PS: Falls es jemanden interessiert:

public void actionPerformed(ActionEvent event)

{

String cmd = event.getActionCommand();

if(cmd.equals("SCAN"))

{

String host = field1.getText();

String portA = field2.getText();

String portE = field3.getText();

System.out.println(host);

System.out.println(portA);

System.out.println(portE);

BuRe buttonrechts=new BuRe(host,portA,portE);

}

}

Also das JTextField ließt er jetzt ohne Probleme aus!!!

Jetzt hab ich nur noch 1 Problem!!!*heul*

Er will meine Klasse nicht mehr aufrufen!!!!

public void actionPerformed(ActionEvent event)

{

String cmd = event.getActionCommand();

if(cmd.equals("SCAN"))

{

String host = field1.getText();

String portA = field2.getText();

String portE = field3.getText();

BuRe buttonrechts=new BuRe(host,portA,portE);

}

}

*langsamdurchdreh*

;)

Hmm kennst du dich mit anonymen Klassen aus ?

Ist nur mal ein Ansatz:

z.B Button buttonrechts = new Button("BlaBla");

buttonrechts.addActionListener( new ActionListener() {

public void actionPerformed(ActionEvent e) {

/*

und hier nun was Du damit tun willst

*/

}

});

Damit kannst du individuell auf jeden Button reagieren, löst so manche Probleme......

Beachte aber das Variablen, Objekte die in dieser Klasse genutzt werden, mit final deklariert werden müssen.

z.B final String portA = textField.getText();

Das hab ich schon probiert, hat aber trotzdem nicht gefunzt!!! Genau dieses Schema hab ich ja auch schon angewandt!!

Ich schätze mal, das der Fehler in dieser Zeile steckt!

>>>buttonrechts=new BuRe(fieldhost,fieldportA,fieldportE);<<<

Bei einem Debug überspringt er diese Zeile einfach!!!

Aber Danke nochmal!!!!

Peeter

Hi,

nungut also wenn Ihr jetzt drüber diskutiert was an sich besser sein sollte, dann würde ich auf keinen Fall anonyme Klassen für ActionHandling hernehmen sondern Inner-Classes und zwar abgeleitet von AbstractAction und diese dann an den Button hängen (gibt einen Konstruktor von JButton, wo Du eine Action mitgeben kannst).

Dann hast Du wirklich volle Kontrolle und kannst eine Action auch an mehrere Buttons hängen usw.

MfG Markus

<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Hi,

nungut also wenn Ihr jetzt drüber diskutiert was an sich besser sein sollte, dann würde ich auf keinen Fall anonyme Klassen für ActionHandling hernehmen sondern Inner-Classes und zwar abgeleitet von AbstractAction und diese dann an den Button hängen (gibt einen Konstruktor von JButton, wo Du eine Action mitgeben kannst).

Dann hast Du wirklich volle Kontrolle und kannst eine Action auch an mehrere Buttons hängen usw.

MfG Markus

Hi,

eine Inner-Class wird genauso definiert wie eine normale, nur das sie eben innerhalb einer anderen Klasse steht:


public class outerclass{

...


       private class innerclass{

         Methoden der inneren Klasse

       }

}

Du kannst einen String mit buttonName.setText("OK") noch setzen. Der Vorteil ist, daß eine solche Action an alle Componenten gehängt werden kann, die ein ActionEvent werfen können. Also ein kleines Beispiel:

Du hast eine Applikation mit Menüleiste, Iconleiste und noch Buttons.

Es gibt einen Button, einen Menüpunkt und ein Icon zum speichern.

Auf Deine Art müßtest Du dreimal alles codieren, auf meine Art hänge ich die gleiche Action dreimal an unterschiedliche Komponenten. Außerdem: Wenn z.B. noch nicht zum speichern da ist, dann will ich alle drei Komponenten deaktivieren. Du setzt jetzt aufwendig jede der drei Komponenten auf disabled. Ich setze meine ACTION auf disabled und die GUI passt sich automatisch an (MVC-Prinzip).

Hoffe das hat Dich überzeugt :D

MfG Markus

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.