Uebergabe von Objekten nach anklicken von JCheckBox

Status
Nicht offen für weitere Antworten.

Corcovado

Bekanntes Mitglied
Hallo,
Also ich habe ein Riesen Problem:
Ein Objekt einer Klasse soll mir den Inhalt eines Vectors (=IndexIn), als anwaehlbare Eigenschaften, in Form von einer Liste von Checkboxen in einem Fenster praesentieren.

Code:
public class FilePresentation extends JFrame implements ActionListener {
...
//  Es soll ein Array von CheckBoxen erstellt werden:
	private JCheckBox[] cb;
...
//  ...mit der Laenge (=size), welche gleich der Anzahl der Elemente im Vektor ist
	size = IndexIn.size();
...
...
...
//  Funktion chooseOption() soll das JCheckBox-Array darstellen :
	public Vector chooseOption(){
...
		JPanel cbPanel = new JPanel(new GridLayout(0,1));
		cb = new JCheckBox[size];
		
		for(int cnt = 0; cnt < size; cnt++){
			cb[cnt] = new JCheckBox((cnt + 1)+ ".  " + String.valueOf(IndexIn.get(cnt)));
			
			cb[cnt].addActionListener(this);
			cbPanel.add(cb[cnt]);
		}

		JScrollPane scrollpane = new JScrollPane(cbPanel);
		getContentPane().add(scrollpane, BorderLayout.CENTER);
...
//  ...und schliesslich am Schluss den Vektor der nun ausgewaehlten Optionen
//  zurueckgeben:
		setSize(300,300);
		show();	
		return IndexOut;
	}
...
...
...
//  ...und die Funktion actionPerformed() sollte bei clicken eines OK-Button
//  im Fenster, die angewaehlten Optionen in den zweiten Vector IndexOut
//  schreiben.
...
	public void actionPerformed(ActionEvent arg0) {
		
		if(arg0.getSource() == cancel){
			System.exit(0);
		}else if(arg0.getSource() == ok){
			System.exit(0);
			
//  tja - genau hier sollte dann nach klicken von OK das Array der CheckBoxen 
//  durchgegangen werden und bei geklickter CheckBox eben der Name der Checkbox
//  als String am Ende des Vectors IndexOut angehaengt werden.

			for(int cnt = 0; cnt < size; cnt++){
				if(cb[cnt].isSelected() == true){
					IndexOut.addElement(String.valueOf(IndexIn.get(cnt)));
				}
			}
		}
	}

Ich habe v.a. die Probleme:
Wie schaffe ich es, nach klicken von OK, die ge-checkten Felder der JCheckBox in den Vektor IndexOut zu schreiben?
Wie uebergebe ich den Vektor IndexOut am besten, so dass er auch die Optionen enthaelt? Mir ist aufgefallen, das eigentlich nix zurueckkommt, ich denke das es wohl an irgendeiner Sache liegt, die was mit Threads zu tun hat ???

Da ich mich noch nicht wirklich in Java auskenne hoffe ich auf ausfuehrliche Antworten, ich bin auch immer sehr ueber Codestellen dankbar :wink:
 

jptc.org

Bekanntes Mitglied
Ok, momentan hab ich da noch ein kleines Verständnisproblem: Du ruftst bei OK und bei CANCEL System.exit(0) auf. Dieser Aufruf beendet Dein Programm sofort und deshalb wird der Code mit dem Auslesen der Checkboxes gar nicht erst aufgeführt. Wenn der gegebene Code nur ein Tippfehler ist, dann poste doch bitte den richtigen!

:?:

Karsten Voigt
http://www.java-performance-portal.org
 
G

Guest

Gast
AUA !!!! Stimmt ...

Na dann um das noch halbwegs zu nem sinnvollem Post zu machen:
der Code sollte natuerlich diese zweite Zeile
Code:
System.exit(0)
bei der OK abgepfrueft wird, nicht enthalten - ist das dann ein sinnvoller Ansatz, beim Arbeiten mit JCheckBoxen?
Is mein erster Versuch fuer sowas und ich hab mir das nur so eben zusammengestellt.

Trotzdem - hab ich Aussichten darauf, dass die untere Funktion, also chooseOption(), denn ueberhaupt den aktualisierten Vector (=IndexOut), also mit den ausgewaehlten Optionen, zurueckgibt?
Weil actionPerformed() was da so nebenbei mitlaeuft ja schliesslich erst irgendwann aufgerufen/abgearbeitet wrid und doch das return der chooseOption() auch vorher eintreten kann oder nicht?
Wenn es so ist, wie uebergebe ich dann am besten den aktualisierten Vektor?[/b]
 

jptc.org

Bekanntes Mitglied
Du kannst schon davon ausgehen; das Deine actionPerformed auch die richtigen Werte von der GUI erhält! Sind die Checkboxes beim Klick auf OK selektiert, so sind Sie dies auch beim Aufruf der entsprechenden actionPerformed methode. (Ich hoffe mal Du hast nicht selber mit Threads in der GUI rumexperiementiert).

So und wieder einmal zum Verständnis: Wer ruft die Methode chooseOption eigentlich auf? Hier werden ja nur die Checkboxes dargestellt, d.h. indexOut wird da doch gar nicht gebraucht (und ist wahrscheinlich auch zu recht leer).

Die Befüllung von IndexOut erfolgt doch erst beim click auf einen button und dann ist die methode chooseOption schon lange vorbei!

Vielleicht postest Du mal den ganzen Code (oder schickst Ihn mir).

Karsten Voigt
http://www.java-news-center.org
 
G

Guest

Gast
Tja ich versuchs mal zu erklaeren, weil ich hab den Code grad nich da (is aufm andern Rechner und hier hab ich nichmal java installiert, daher frag ich einfach mal Dinge, die ich auch vielleicht durch testen herausbekommen haette, obs funktioniert etwa ich hoffe es nervt nicht :lol: )

Gut - also es sollte so sein das eine Klasse x ein Objekt der Klasse Y (= FilePresentation) und uebergibt dem Konstruktor dabei einen Vector (=indexIn).
Dann wird vonn Klasse A die Funktion B::chooseOption() aufgerufen die eben das Fenster darstellt und am Schluss return IndexOut hat, welches nun aber der Vector mit den ausgewaehlten Optionen sein sollte.

Schema
eieiei - hoffentlich kann man das verstehn...

links alles:
class A -------------------> instantiiert mit Vector ---------------> class FilePresentation( Vector IndexIn)
|
|
|
class A----------------------> ruft ueber das Objekt auf ------------> FilePresentation::chooseOption() baut Fenster und waehlt aus mittels der CheckBoxen, dann:
|
|
|
soll Vector mit ausgewaehlten Optionen zureuckgeben <--------------------- return IndexOut;
an Class A


Jetz die Frage: haut da die Rueckgabe einfach so hin? wie lauft das mit dem actionPerformed(), ist das abgeschlossen vor dem return aus chooseOption() - also is der mit return zurueckgegebene IndexOut der actualisierte oder is der noch leer, weil actionPerformed() irgendwann ausgefuehrt wird?

Natuerlich hab ich (diesmal) nicht mit den GUI Threads rumgemurkst, kommt vielleicht demnaechst, ich weiss ja jetz an wen ichs schicken kann :autsch: gg
 

Corcovado

Bekanntes Mitglied
Hallo,
Hier also jetz mal mein Code soweit:
Man sollte die Klasse mit einem Vektor (Index von Optionen) instanziieren koennen...
Code:
FilePresentation fp = new  FilePresentation(VectorMitOptionen);
...dann sollte man die Methode fuer das Fenster aufrufen koennen und dabei eben die Checkboxen
anklicken koennen:
Code:
Vector vec = fp.chooseFile();
...die Inhalte der angeklickten CheckBoxen sollten dann in einen Vektor eingetragen werden.
Dieser sollte dann eigentlich wieder zurueckgegeben werden an den jenigen, der die Funktion aufgerufen hat.
Natuerlich haut das nicht hin, was eben mein Problem ist.
Ich denke es liegt daran, dass eben actionPerformed als Thread permanent im Hintergrund laeuft und somit die Fenster-Funktion einfach den leeren Vector zurueckgibt bevor irgendwas angeklickt ist, da actionPerformed ja weiterlaeuft.
Wie schaffe ich es, dass sich bei OK, das Fenster schliesst und eben dann der volle Vector an den "Aufrufer" zurueckgegeben wird?


Code:
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;


public class FilePresentation extends JFrame implements ActionListener {
	
	private static Vector	IndexIn,
							IndexOut;
	private JButton ok, cancel;
	private JCheckBox[] cb;
	private static int size;

	
	
	///////////////////////////////////////////////////
	
	public FilePresentation(Vector in){
		super("File Chooser v0.0");
		
		System.out.println("presentation");
		
		IndexIn = new Vector(0);
		IndexOut = new Vector(0);
		
		IndexIn = in;
		size = IndexIn.size();
	}	

	///////////////////////////////////////////////////
	
	
	public void actionPerformed(ActionEvent arg0) {
		
		if(arg0.getSource() == cancel){
			System.exit(0);
		}else if(arg0.getSource() == ok){
			for(int cnt = 0; cnt < size; cnt++){
				if(cb[cnt].isSelected() == true){
					IndexOut.addElement(
							String.valueOf(IndexIn.get(cnt)));
				}
			}
		}
	}

	
	
	public Vector chooseFile(){
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		getContentPane().setLayout(new BorderLayout());
		
		
//		JPanel for Checkboxes
		JPanel cbPanel = new JPanel(new GridLayout(0,1));
		cb = new JCheckBox[size];
		
		for(int cnt = 0; cnt < size; cnt++){
			cb[cnt] = new JCheckBox((cnt + 1)+ ".  " + String.valueOf(IndexIn.get(cnt)));
			
			cb[cnt].addActionListener(this);
			cbPanel.add(cb[cnt]);
		}
		JScrollPane scrollpane = new JScrollPane(cbPanel);
		getContentPane().add(scrollpane, BorderLayout.CENTER);
		
		
//		JPanel for OK and Cancel Button
		JPanel buttonPanel = new JPanel(new FlowLayout());
		
		ok = new JButton("OK");
		buttonPanel.add(ok);
		
		cancel = new JButton("Cancel");
		buttonPanel.add(cancel);
		
		ok.addActionListener(this);
		cancel.addActionListener(this);
		
		
//		start the window		
		getContentPane().add(buttonPanel, BorderLayout.SOUTH);
		setSize(300,300);
		show();	
		
	
//		wird nur immer leer zurueckgegeben
		return IndexOut;
	}	
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
B Sent and Receive Funktionen zwischen Objekten ermöglichen? Allgemeine Java-Themen 8
A Objekt aus anderen Objekten machen Allgemeine Java-Themen 8
PCOmega137 Objekten zufällig erzeugte Namen geben Allgemeine Java-Themen 2
T Speichern von Objekten Allgemeine Java-Themen 2
D Serialisierung und Deserialisierung von Objekten - Frageprogramm Allgemeine Java-Themen 4
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
M loeschen von objekten Allgemeine Java-Themen 22
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
F Best Practice Große Anzahl an Objekten speichern und lesen Allgemeine Java-Themen 19
M Array aus Thread Objekten erstellen Allgemeine Java-Themen 2
K Vergleich von Strings von Objekten Allgemeine Java-Themen 4
B Endlosschleife beim Verteilen von Objekten Allgemeine Java-Themen 4
L Von ArrayList abgeleitete Klasse nur mit bestimmten Objekten füllen Allgemeine Java-Themen 1
D Verwaltung von sehr vielen Objekten Allgemeine Java-Themen 12
G problem: array aus objekten Allgemeine Java-Themen 10
H Liste von Objekten generisch sortieren Allgemeine Java-Themen 0
S Zur Laufzeit Klasse mit einer anzahl von X Objekten erstellen Allgemeine Java-Themen 5
B OOP Auf Zustandsänderungen von Objekten reagieren Allgemeine Java-Themen 2
H Best Practice zu vielen konstanten Objekten? Allgemeine Java-Themen 10
M 3D-Grafik Probleme beim drehen von Objekten Allgemeine Java-Themen 9
A Sinnvolles Software Design bei Eigenschaftsänderungen von Objekten Allgemeine Java-Themen 7
J Java-Implementierung diverser Beziehungen zwischen Klassen bzw. Objekten Allgemeine Java-Themen 2
S Threads Liste mit Objekten in Teillisten zerlegen und abarbeiten Allgemeine Java-Themen 3
P J-Unit vergleich von 2 Objekten merkwürdig Allgemeine Java-Themen 7
Landei Guice - Injection von "zwischendurch" erzeugten Objekten Allgemeine Java-Themen 4
S Sortieren nach Objekten Allgemeine Java-Themen 13
T Liste mit GregorianCalendar-Objekten in List einlesen, mit Collection sortieren und ausgeben Allgemeine Java-Themen 3
D Von mehreren Objekten eine Eigenschaft abfragen Allgemeine Java-Themen 11
G Array mit neuen Objekten der selben Klasse füllen Allgemeine Java-Themen 2
S Eine Collection von Objekten mit LDAP Syntax filtern Allgemeine Java-Themen 5
M Schnittmenge von Objekten Allgemeine Java-Themen 3
N Performates lesen von Objekten aus Dateien Allgemeine Java-Themen 2
hdi Speichergröße von Objekten & Referenzen Allgemeine Java-Themen 8
hdi JTable: Sortierung von Date-Objekten Allgemeine Java-Themen 4
C ArrayList (mit Objekten) sortieren Allgemeine Java-Themen 12
C TreeSet mit Objekten befüllen Allgemeine Java-Themen 12
L Lesen von Objekten aus Datei Allgemeine Java-Themen 17
S Liste mit verschiedenden Objekten Allgemeine Java-Themen 15
I Vector mit Objekten sortieren,Videos mit JMF wiedergeben Allgemeine Java-Themen 6
J ArrayList aus Point-Objekten nach dem x-Wert ordnen Allgemeine Java-Themen 2
T abspeichern und laden von objekten in JFrame Allgemeine Java-Themen 2
G Serialisieren von Objekten : IO Exception beim Schreiben Allgemeine Java-Themen 3
G Kompletten Frame mit allen Objekten resizen Allgemeine Java-Themen 10
G Tagesdifferenz zw. 2 Gregorian Objekten Allgemeine Java-Themen 14
M Endgültiges Löschen von Objekten Allgemeine Java-Themen 7
M Problem mit Objekten Allgemeine Java-Themen 11
B Serialisieren von mehreren Objekten Allgemeine Java-Themen 7
W Threads & Pipes --> Ist eine Übergabe von Objekten mö Allgemeine Java-Themen 7
T casten von Objekten aus einer ArrayList Allgemeine Java-Themen 4
O kommunikation zw. objekten Allgemeine Java-Themen 7
G List mit selbstdefinierten Objekten sortieren Allgemeine Java-Themen 2
T Unabhängigkeit von Variablen/ Objekten. Allgemeine Java-Themen 6
M String aus array mit Objekten suchen Allgemeine Java-Themen 26
F Array von Objekten Allgemeine Java-Themen 2
B Darstellung von Objekten dauern unterschiedlich lang ! Allgemeine Java-Themen 5
G hashtable mit objekten Allgemeine Java-Themen 9
G Probleme mit Clonen von Objekten die JComponents enthalten Allgemeine Java-Themen 3
M Alle möglichen Kombinationen von mehreren Objekten berechnen Allgemeine Java-Themen 6
D OOP-Style bei Objekten Allgemeine Java-Themen 35
H Speicher freigeben klappt nicht bei Image Objekten, warum? Allgemeine Java-Themen 8
m@nu Programm-Models in Static-Objekten speichern Allgemeine Java-Themen 5
T Problem mit Zuweisung von Objekten Allgemeine Java-Themen 5
K Ordner/Dateistruktur in Objekten nachbilden Allgemeine Java-Themen 6
B Array von Objekten Allgemeine Java-Themen 3
W Mit Date-Objekten arbeiten Allgemeine Java-Themen 10
C Sichbarkeit von Objekten / Methoden in verschiedenen Files Allgemeine Java-Themen 7
S Sortieren Von Objekten Nach Attribut Allgemeine Java-Themen 6
lhein Übergabe von Objekten von Java an C über JNI Allgemeine Java-Themen 5
Ernesto95 HTTP Mit JavaScript erzeugte dynamische Webseite auslesen und nach einem Schlüsselwort durchsuchen Allgemeine Java-Themen 6
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
I 2D-Grafik Vektor-Grafik über die Zwischenablage nach Adobe Illustrator transferieren Allgemeine Java-Themen 8
M Suche nach String mit unbekannten characters Allgemeine Java-Themen 53
L 2 Dimensionale ListArray Abfrage nach einem Wert suchen Allgemeine Java-Themen 5
torresbig Url nach Webseiten-Login auslesen & Daten an Webseite senden Allgemeine Java-Themen 9
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
OnDemand Ram Freigabe erfolgt nicht nach Prozessende Allgemeine Java-Themen 18
G Geotools Probleme nach PC-Wechsel Allgemeine Java-Themen 6
K Verbesserung der Laufzeit beim Sortieren von Einwohnern nach ihrem Geburtsjahr Allgemeine Java-Themen 0
E Variablen Nach Übergabe einer Variable den Constructor aufrufen Allgemeine Java-Themen 16
I In Java geschriebene Software nach Mac OS portieren Allgemeine Java-Themen 7
M TicTacToe Sound nach jedem Zug Allgemeine Java-Themen 21
I HTML / XHTML Seite nach Excel exportieren. Suche Lib Allgemeine Java-Themen 12
J4n5chmiddi Methoden Website-URL im Browser öffnen nach erfolgreicher Basisauthentifizierung in Java Allgemeine Java-Themen 12
pkm Frage nach eventuellem syntaktischen Zucker bei der Konkatenation von ArrayLists Allgemeine Java-Themen 4
Monokuma String List nach Zahlen und Worten sortieren Allgemeine Java-Themen 9
H Collections Aktuellen Index generell und nach Sortierung ausgeben Allgemeine Java-Themen 6
Kirby.exe Filename nach bestimmtem Pattern durchsuchen Allgemeine Java-Themen 5
S Wörterliste nach Wörtern mit u durchsuchen und diese auf der Konsole ausgeben lassen Allgemeine Java-Themen 33
W Pdf verwerfen, weil Checkbox nach Unterschrift geaendert wurde Allgemeine Java-Themen 5
G File not found - nach dem Kompilieren Allgemeine Java-Themen 6
S Swing Speichern nach Button-Klick Allgemeine Java-Themen 5
Meeresgott Effizientester Weg um nach der Value einer verschachtelten Map aufzulösen Allgemeine Java-Themen 5
M Java 8 nach Java 6 konvertieren Allgemeine Java-Themen 7
N Neustarten des Codes nach der Fehlermeldung Allgemeine Java-Themen 17
L Nach dem Login // Java Desktop Software Allgemeine Java-Themen 7
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
F Java Code ausführen direkt nach Anmelden in Windows Allgemeine Java-Themen 2
J Jasper Reports - Compilerproblem nach Umstellung von Groovy auf Java Allgemeine Java-Themen 7
looparda Liste filtern nach Prädikaten verschiedener Typen Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben