Von einem Fenster zum anderen

Mungo1981

Mitglied
Ich verwende zum Programmieren unter Java, Netbeans
Nun kann ich in NetBeans leicht ein Fenster des GUI Programmieren / Entwerfen
Aber was ich mich frage, wie gebe ich zwischen Zwei Fenstern die Kontrolle weiter.
Oder anders gesagt, wie öffne ich über einen Button ein Neues / ANDERES Fenster.

Vielleicht ein Beispiel, wie man das macht ???
 
wenn du bisher nur NetBeans deinen Code schreiben läßt, dann ist das in der Tat schwer selber zu machen..

schau dir an was NetBeans schreibt, schau dir beliebige Swing- oder AWT-Beispielprogramme im Internet an,

die kürzeste Version ist wohl
new JFrame().setVisible(true);
für alles weitere das JFrame-Objekt in eine Variable und damit arbeiten,
alles besser VOR setVisible(true), diesen Befehl als letzten, um eines von zahlreichen Fakten gleich mal zu erwähnen
 
Hmm ich hab das schon mal irgendwo gepostet, aber das sollte helfen.

Java:
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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


public class WindowOpener {

	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			
			@Override
			public void run() {
				new WindowOpener();
			}
		});
	}
	
	public WindowOpener() {
		JFrame frame1 = new JFrame("Window 1");
		frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JPanel mainPanel = new JPanel();
		JButton button = new JButton("Open Window 2");
		button.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				openNewWindow();				
			}
		});
		mainPanel.add(button);
		frame1.setContentPane(mainPanel);
		frame1.setPreferredSize(new Dimension(600, 400));
		frame1.pack();
		frame1.setVisible(true);
	}
	
	private void openNewWindow() {
		JFrame frame2 = new JFrame("Window 2");
		frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		JPanel mainPanel = new JPanel();
		JLabel label1 = new JLabel("Window 2 opened!");
		mainPanel.add(label1);
		frame2.setContentPane(mainPanel);
		frame2.setPreferredSize(new Dimension(300, 200));
		frame2.pack();
		frame2.setVisible(true);
	}
}
 
Gut ...
... Ich wurde gerne NetBeans die Aufgabe lassen meine Fenster zu Codieren und selber nur das Fenster Entwerfen. Entwerfen heißt " New >>> JPanel Form ". Das klappt mit einem Fenster ganz gut, solange ich die betreffende Datei direkt Starte. Nur aus einer anderen Datei diese auf zu rufen klappt bei mir nicht.

Weis, bin vielleicht zu Faul für diese Welt.???:L
 
evtl. hilfreich: 'programmiere' bzw. designe jedes Fenster als einzelnes Programm,
das sollte ja wohl gehen oder was könnte dagegen sprechen?

am Ende der Aufruf von B aus A ist dann vielleicht schnell gemacht,
wobei immer kritisch ist, in die Programme einzugreifen, danach mag das Design nicht mehr gehen,
anderseits wäre wohl maximal B betroffen, A sollte noch gehen, egal welche Aufrufe du in einen Listener schreibst,

wenn die B-Klassen relativ unberührt bleiben, auch denkbar, dann kannst du auch B weiter designen
 
Ich halte es für sehr erschwerent wenn ich für jedes Fenster ein neues Programm starten müsste. Kann man nicht einfach das andere Fenster als z.B. Object in das Script vom ersten Fenster einbauen. Ich müsste dann nicht die große Daten Verschiebe machen.;(
 
wie gesagt war mein Tipp nur, die GUI separat zu designen 'wie' ein anderes Programm,
denn so kann es doch wohl keine Probleme geben, oder geht generell gar nix mehr?
dass der Designer nicht zwei Fenster als ein Programm hinbekommt ist noch relativ verständlich,

wenn separat fertig designt, dann die zweite Klasse in der ersten aufrufen, die paar Zeilen sind selber zu machen,
umfangreiche Logik-Interaktionen sowieso selber zu schreiben
 
Nun denn, Der GUI Designer liefert genau das zwei verschiedene Klassen in zwei verschiedenen Texten. Und nun ist es die Frage wie ruffe ich im ersten Object / Klasse das zweite ... auf. ??? ???:L 😳
 
wie gesagt meine zwei Zeilen, wobei das JFrame jetzt hoffentlich durch eine andere Klasse zu ersetzen ist,
im Posting von Flown etwas ausführlicher, den Listener für die Aktion hast du aber hoffentlich eh schon

schau im zweiten Programm nach was dort passiert, evtl. die ganze main kopieren oder auch die main aufrufen,
das ist nicht verboten

ohne Denken geht aber alles nicht, das ist schon Programmierung mit zig relevanten Aktionen pro Minute,
keine 3 Schritt-Anleitung
 
Gut das andere Listing könnte doch über "iMPORT" eingelesen werden.
Dann müsste man die andere Main ja nur noch aufrufen.
Wie das genau geht keine Ahnung.
 
Hier kurz die Lösung des Problems:
1. Sieh dir den automatisch erzeugten Code an.
2. Dort steht eine Klasse bzw. deren Namen
3. Setze den Konstruktor mit dem Namen auf / ein

Und schon startet das gewünschte Fenster aus dem anderen Script-File

Man bin ich dämlich. :autsch:
 

Zurück
Oben