Mehrere JFrames

MetroAffe

Mitglied
Mein Problem:

Ich habe mehrere JFrames und möchte nun das wenn ein 2. geöffnet wird, erst dann wieder auf das dahinter-liegende zugegriffen werden kann wenn dieses (also das 2.) auch wieder geschlossen ist.

Wie realisiere ich das am besten?


Danke für eure Hilfe

mfg MetroAffe
 
Zuletzt bearbeitet:

4by4

Mitglied
sowas?

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;


public class FrameTest {

	public static void main(String[] args) {
		final JFrame frame1 = new JFrame("Frame1");
		final JFrame frame2 = new JFrame("Frame2");
		final WindowEventHandler handler = new WindowEventHandler(frame1, frame2);
		final JButton showFrame2 = new JButton("Show Frame 2");
		showFrame2.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				frame1.setVisible(false);
				frame2.setVisible(true);
			}
		});
		frame1.setSize(400, 100);
		frame2.setSize(400, 100);

		frame1.getContentPane().add(showFrame2);
		frame2.addWindowListener(handler);

		frame1.setLocationRelativeTo(null);
		frame2.setLocationRelativeTo(null);
		
		frame1.setVisible(true);
	}

}

class WindowEventHandler extends WindowAdapter {
	
	private JFrame frame1;
	private JFrame frame2;

	public WindowEventHandler(JFrame frame1, JFrame frame2) {
		this.frame1 = frame1;
		this.frame2 = frame2;
	}

	public void windowClosing(WindowEvent evt) {
		frame1.setVisible(true);
		frame2.setVisible(false);
	}
}

hab ich nur rasch so zusammen gestellt

wenn auf frame1 der button gedrückt wird, öffnet sich frame2, wird dann das fenster gschlossen, wird frame2 "unsichtbar" und frame1 wird wieder sichtbar

*** edit

oder falls frame1 sichtbar bleiben soll, jedoch dem benutzer nur daran hindern soll iwas am frame zu ändern/klicken

Java:
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;

public class FrameTest {

	public static void main(String[] args) {
		final JFrame frame1 = new JFrame("Frame1");
		final JFrame frame2 = new JFrame("Frame2");
		final WindowEventHandler handler = new WindowEventHandler(frame1,
				frame2);
		final JButton showFrame2 = new JButton("Show Frame 2");
		showFrame2.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				frame1.setEnabled(false);
				frame2.setVisible(true);
			}
		});
		frame1.setSize(400, 100);
		frame2.setSize(400, 100);

		frame1.getContentPane().add(showFrame2);
		frame2.addWindowListener(handler);

		int fx = Toolkit.getDefaultToolkit().getScreenSize().width / 2
				- frame1.getSize().width / 2;
		int fy1 = Toolkit.getDefaultToolkit().getScreenSize().height / 2
				- frame1.getSize().height;
		int fy2 = Toolkit.getDefaultToolkit().getScreenSize().height / 2;
		
		frame1.setLocation(fx, fy1);
		frame2.setLocation(fx, fy2);

		frame1.setVisible(true);
	}

}

class WindowEventHandler extends WindowAdapter {

	private JFrame frame1;
	private JFrame frame2;

	public WindowEventHandler(JFrame frame1, JFrame frame2) {
		this.frame1 = frame1;
		this.frame2 = frame2;
	}

	public void windowClosing(WindowEvent evt) {
		frame1.setEnabled(true);
		frame2.setVisible(false);
	}
}
 
Zuletzt bearbeitet:

Akeshihiro

Erfahrenes Mitglied
Oder macht es sich gar nicht erst so kompliziert und benutzt für das zweite JFrame kein JFrame, sondern ein JDialog und setzt diesen modal. Genau dafür sind Dialoge nämlich da.
 

MetroAffe

Mitglied
Ihr werdet es nicht glauben ich bin nun endlich dazu gekommen das ganze auszuprobieren ... und ich muss sagen Akeshihiro -- PERFEKT -- das ist Super easy und funktioniert einwandfrei :D

vielen vielen Dank
mfg MetroAffe