JList auswahl in integer variable?

Alex Großmann

Erfahrenes Mitglied
Hiho!

Ein bestimmt einfaches Problem:
Ich möchte ne Auswahl aus ner JList in ne Variable speichern. Der Vorgang wird ausgelöst wenn ein Button gedrückt wird.
Hier mal der Quellcode:
Java:
übernehmen.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {	
				
				 // Auswahl soll in int port 
				
				ausgabe.append("Es wurde folgender Port ausgewählt: " + port + "\n");
		
				portframe.dispose();
						
	       }
		});

Die Portwerte sind natürlich nur Zahlen, die ich einfach später noch verwenden möchte, daher will ich quasi die Variable "aufheben". Wenn manns im ActionListener anlegt ist es relativ einfach mit getSelectedValue() gelöst, aber dann is die Variable ja auch wieder weg nachm Vorgang :/
ICh hoff ihr könnt mir helfen.
Vielen Dank
 
Zuletzt bearbeitet:
Wenn du anstatt einer anonymen inneren Klasse deine eigentliche Klasse das Interface ActionListener implementieren lässt und eine globale Variable anlegst kannst du diese dann in actionPerformed einfach manipulieren.
 
Danke schonmal.

ICh habe jetzt die Klasse mit implements ActionListener angegeben.
Was nun? Die muss das Teil aussehen?
Geht das so:
Java:
übernehmen.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent port) {	
				
				 
				auswahlports.getSelectedValue(...);  // was muss den hier her? port.auswahlports.getSe(..) ?
				ausgabe.append("Es wurde folgender Port ausgewählt: " + port + "\n");
		
				portframe.dispose();
						
	       }
		});
 
Zuletzt bearbeitet:
Nein ...
wenn du deine Klasse ActionListener implementieren lässt sollte dich der Compiler schon genervt haben das du actionPerformed() implementieren musst. Anstatt also nun uebernehmen *verwende in Source-Codes NIEMALS Sonderzeichen / Umlaute > Charset-Problem* eine anonyme Klasse zu übergeben einfach THIS ... und dann den gesamten Inhalt in die actionPerformed deiner Klasse.
 
Ich habe das von SPiKEe erwähnte mal in ein Stückchen Code umformuliert:
Java:
class MyClass implements ActionListener
{
	private int port;

	//...

		übernehmen.addActionListener(this);

	//...

	public void actionPerformed(ActionEvent arg0)
	{
		//port zuweisen
		ausgabe.append("Es wurde folgender Port ausgewählt: " + port + "\n");
                portframe.dispose();
	}
}
 
Hiho,
danke dir, das sieht richtig gut aus.
Kann ich jetzt jeden Button so anlegen, also mit this?

Und mein Hauptproblemchen besteht immernoch =D wie bekomm ich den nun den Wert von der Auswahl in das Integer rein?
wenn ich
Java:
port.getSelectedValue();
kommt das port nur ein primitiver Integer ist.... muss ich erst String nehmen und dann in Integer umwandeln?
 
Hi

Du hast ja eine JList, aus der du den Port lesen möchtest. Also musst du diese auch nach dem selektierten Wert fragen. Je nachdem, wie du die Werte in die JList gepackt hast, musst du diese dann so auslesen:

Java:
// Als int
this.port = (Integer) auswahlports.getSelectedValue();

// Als String (z.B. über NetBeans GUI Editor)
this.port = Integer.parseInt(auswahlports.getSelectedValue().toString());

Best regards
 
YAY! Problem gelöst, danke euch!
Über das This muss ich mir nochmal was anschauen, scheint ja sehr nützlich zu sein :) Danke nochmals für eure Hilfe!
 
Kann ich jetzt jeden Button so anlegen, also mit this?

Ja, allerdings musst du dann in actionPerformed() unterscheiden welcher Button gedrückt wurde. Das könnte z.B. so aussehen:
Java:
if(arg0.getSource()==button1) { /*...*/ }
else if(arg0.getSource()==button2) { /* ... */ }
//...
 
das wäre übersichtlicher, weil jetzt hängen die ganzen Button Implementierungen noch in der GUI Klasse rum :)
Danke dir, echt viel gelernt!
 
Zurück