Datenübergabe bei Gui's

Status
Nicht offen für weitere Antworten.

Erddrache

Mitglied
Ne Frage zu allen Arten von Dialogfenstern - und zwar ganz blöd gefragt, wie kann ich die "gesetteten" Eigenschaften von außen abrufen...
Ums an nem Beispiel zu erklären: ich invoke meine Gui
Code:
		BachelorGUI mainGui = new BachelorGUI();
		mainGui.setVisible(true);
wobei BachelorGui ne einfache Dialogapplikation ist...
Wenn ich jetzt in dieser Gui Unterfenster öffne, um irgendwelche Settings zu setzten - wie kann ich die dann von außen her abrufen??? Ich kann ja kein neues Objekt erzeugen, weil das n neues Fenster aufmachen würde... Wie bekomm ich die in der gesetzten Settings nach außen...
Oder gleiches Spiel bei nem FileChooser... Kann man, wenn der Dialog wieder geschlossen ist, die erstellte bzw geöffnete Datei übergeben - und wenn ja, wie???
Danke
 

Oni

Top Contributor
ich weiss nicht genau ob ich dich richtig versteh.

wenn ja, würde ich einfach die referenz mit übergegeben:

Code:
      BachelorGUI mainGui = new BachelorGUI(dasObjektWelchesDieDatenBraucht); 
      mainGui.setVisible(true);

dann kannst du aus der mainGui klasse darauf zugreifen.

Code:
 dasObjektWelchesDieDatenBraucht.setNeueDaten("bla");
 

Erddrache

Mitglied
Jaein...
Würde nur ein Parameter übergeben werden, würds so klappen... Aber in der Gui kommen mir ja div. Strings, File, Int's etc entgegen... Ich kann die ja nicht alle zurück geben... Oda???
Man kann doch da bestimmt auch irgendwie von außen drauf zurgeifen, ohne wieder n neues Fenster zu erzeugen... Geht das vielleicht irgendwie über public??? Oder wenn man das alles als Kind-Klassen deklariert???
 

Oni

Top Contributor
wenn du alles public static machst kannst du das, aber das sollte man nicht machen.

ich würde wie gesagt die referenz übergeben und mir ein paar methoden schreiben für die werde die ich brauche.

oder du schreibst eine model-klasse in der du die settings speicherst und von bei gui-klassen drauf zugreifen kannst.

kannst du mal etwas code posten, dann wird das problem vielleicht klarer.
 

Erddrache

Mitglied
Hier wäre ein Beispiel
Wichtig is im Prinzip nur der ganz untere Teil, hab aber halt mal alles gepostet...

Code:
	private void initGUI() {
		try {
			GridBagLayout thisLayout = new GridBagLayout();
			thisLayout.columnWeights = new double[] {0.1,0.1,0.1};
			thisLayout.columnWidths = new int[] {7,7,7};
			thisLayout.rowWeights = new double[] {0.1,0.1,0.1,0.1};
			thisLayout.rowHeights = new int[] {7,7,7,7};
			this.getContentPane().setLayout(thisLayout);
			this.setLocation(100,100);
			this.setTitle("ComPort Settings");
			this.setModal("true");
			{
				jLabelHeadline = new JLabel();
				this.getContentPane().add(jLabelHeadline, new GridBagConstraints(0, 0, 3, 1, 0.0, 0.0, 
GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
				jLabelHeadline.setText("Choose the appropriate Baurdate");
			}
			{
				jRadioButton4800 = new JRadioButton();
				group.add(jRadioButton4800);
				this.getContentPane().add(
					jRadioButton4800,
					new GridBagConstraints(
						0,
						1,
						1,
						1,
						0.0,
						0.0,
						GridBagConstraints.CENTER,
						GridBagConstraints.NONE,
						new Insets(0, 0, 0, 0),
						0,
						0));
				jRadioButton4800.setText("4800");
				jRadioButton4800.setActionCommand("4800");
			}
			{
				jRadioButton9600 = new JRadioButton("9600", true);
				group.add(jRadioButton9600);
				this.getContentPane().add(
					jRadioButton9600,
					new GridBagConstraints(
						0,
						2,
						1,
						1,
						0.0,
						0.0,
						GridBagConstraints.CENTER,
						GridBagConstraints.NONE,
						new Insets(0, 0, 0, 0),
						0,
						0));
				jRadioButton9600.setText("9600");
				jRadioButton9600.setActionCommand("9600");
			}
			{
				jRadioButton15200 = new JRadioButton();
				group.add(jRadioButton15200);
				this.getContentPane().add(
					jRadioButton15200,
					new GridBagConstraints(
						0,
						3,
						1,
						1,
						0.0,
						0.0,
						GridBagConstraints.CENTER,
						GridBagConstraints.NONE,
						new Insets(0, 0, 0, 0),
						0,
						0));
				jRadioButton15200.setText("15200");
				jRadioButton15200.setActionCommand("15200");
			}
			{
				jButtonSelect = new JButton();
				this.getContentPane().add(
					jButtonSelect,
					new GridBagConstraints(
						2,
						3,
						1,
						1,
						0.0,
						0.0,
						GridBagConstraints.CENTER,
						GridBagConstraints.NONE,
						new Insets(0, 0, 0, 0),
						0,
						0));
				jButtonSelect.setText("OK");
				jButtonSelect.addActionListener(this);
			}
			this.setSize(248, 255);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}



	public void actionPerformed(ActionEvent e) {
		String cmd = e.getActionCommand();
		if(cmd.equals("OK")) {
			ButtonModel selected = group.getSelection();
			String test = selected.getActionCommand();
			if (test.equals(null)) test = "9600";
			System.out.println(test);
			setVisible(false);
			dispose();
		
		}
		
	}

ich würde jetzt gern den String "test" außerhalb zugängig haben...
@ Oni: meinst du mit "ein paar Methoden" set- und get Methoden??? Muß ich aber nicht für die get- Variante immer wieder die Gui neu aufrufen, wenn ich den wert haben will... Oder muß ich den dann vorher in der class speichern...
Danke nebenbei schonmal
 

L-ectron-X

Gesperrter Benutzer
Den String mit dem Namen test legst du als private Instanzvariable an.
Dann schreibst du dir noch eine Methode, z.B.
Code:
public String getTestString() {
  return test;
}
und lässt diese Methode den String test zurückgeben.
 
G

Guest

Gast
Ja super, das klappt mit den get Methoden... Danke...
Ne kleine Frage aber nochmal...
Und zwar wenn ich die besagten Werte weiter nach oben reichen will, muß ich ja immer neue Objekte initieren (wegen des Konstruktors)
Code:
	public int getBaudRate() {
		int baudRate = 0;
		JFrame here = new JFrame();
		NewJDialogComPort get = new NewJDialogComPort(here);
		baudRate = get.getBaudRate();
		return baudRate;
	}

Am Beispiel hier jetzt den JFrame... Is das immer so??? Oder sollte man da noch nen zweiten Konstuktor ohne Parametern schreiben???
Danke schonmal
 
S

SlaterB

Gast
editiere doch bitte mal die eine lange Zeile in deinem vorherigen Post, macht ja den ganzen Thread unlesbar ;)

--------
was ist getBaudRate, was soll die tun, zu welcher Klasse gehört die?

ich nehme mal an die gehört zum JFrame, soll einen Dialog erzeugen und das Ergebnis zurückgeben?
also wenn die in einem JFrame drin ist oder irgendwo ein solches existiert kanns du doch dieses JFrame benutzen und musst kein neues erzeugen,
z.B. NewJDialogComPort get = new NewJDialogComPort(this);


was hat das nun mit irgendeinen Konstruktor zu tun?
habe die bisherigen Posts zwar nur überflogen aber kann da überhaupt keinen Zusammenhang erkennen ;)
 

Erddrache

Mitglied
Also, Problem war, daß ich nicht wußte, wie ich Daten, die ich per Gui bekommen habe, nach außen weiter gebe.
Ums an nem Beispiel:
Eine Mainklasse erzeugt eine MainGuiClass; diese MainGuiClass erzeugt wiederum in eine Klasse "OptionsGui" - um z.B. so was wie ne Baudrate zu setzten... In dieser Klasse habe ich dann meine Variable baudRate lesen und setzten können...
Ich wollte nun wissen, wie ich diese nun auch außerhalb der Klasse gescheit abfragen kann -> Antwort war per getMethode....
Sorry, wenn ich mich da teilweise n bissl seltsam ausdrücke - hab in Java kaum Erfahrung...
:autsch:
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben