Panels zeigen

Status
Nicht offen für weitere Antworten.

HTML

Bekanntes Mitglied
Hi
Ich habe ein Panel mit Buttons, und damit verbundene ActionListeners .
Ich möchte dass wenn ich auf einen Button klicke ein neues Frame geöffnet wird.
aber mir fehlen diese zwei Wörter die sagen das ein neues Fenster geöffnet werden soll
z.B. wie setText oder setBackground
nur das eben nicht der Text oder der Hintergrund sonder ein neues Fenster geöffnet werden soll.
Danke schon mal für alle Tipps
 

MPW

Top Contributor
ähm,
^^das macht es aber nur sichtbar, öffnet es nicht:

Code:
JFrame jf = new JFrame("Hello, I'm your brandnew Window");
jf.setSize(640, 480);
jf.setVisible(true);
 

MPW

Top Contributor
ja ich wusste nicht genau, was ihm jetzt noch fehlte, deswegen hab' ich ihm das noch als Hilfe gegeben.

Öfnnen könnte man auch mit Instanz erzeugen verstehen.

Aber ich bin sicher, er wird's schon schaffen.
 

MPW

Top Contributor
lin hat gesagt.:
Öfnnen könnte man auch mit Instanz erzeugen verstehen.
was is den dat?
Code:
JFrame jf = new JFrame("Hello, I'm your brandnew Window");

Also, ich erklär's dir:

Es wird eine Instanz der Klasse JFrame erzeugt und in der Variable jf gespeichert. Dem Konstruktor übergibt man den Titel des Fenster, oder setzt ihn später mit setTitle(String s);. Diese Instanz kann man dann auf dem Bildschirm sichtbar machen, set Visible(true);.
 

lin

Top Contributor
:) ah, lol, ich hab da was bei der Konversation missverstanden... :oops: heute bin ich irgendwie bisserl begriffsstutzig, schon der zweite Thread in dem ich irgendwas hinquatsche und dann hintendrein merke, dass ich was nicht genau gelsesen hab.. besser ich halt die Klappe für heute :)
 

HTML

Bekanntes Mitglied
tag ,

danke schon mal

aber ich schaffs noch nicht ganz:

Erstmal erzeuge ich den ActionListener:
Code:
BAction b1Action = new BAction(+++++++++++++);

aber WAS SCHREIBE ICH DA WO DIE GANZEN ++ SIND??

dann füge ich ihn an den Button an:
Code:
B1Button.addActionListener(b1Action);

und später wird der ActionListener noch erweitert, in meinem Fall :
Code:
B1Frame.setVisible(true);
ODER??

Natürlich hab ich das B1Frame schon weiter oben erzeugt und setVisible auf false gesetzt.

also wie kann ich des jetzt machen, das ich auf den einen Button klicke und er öffnet das eine Fenster ( B1Frame )

und dass ich dann auf einen anderen Button kicken kann und der öffnet dann ein anderes Fenster ( z.B. B2Frame )

Des kann ja so schwer net sein, aber ich habs noch net so drauf :bae:
 
B

Beni

Gast
Du schreibst dort das rein, was der Konstruktor von BAction erwartet.
Wenn der Konstruktor z.B. so aussieht:
Code:
public BAction( JFrame frame, boolean xyz ){...}
... würdest du z.B. schreiben:
Code:
BAction action = new BAction( b1Frame, true );
(wenn der Konstruktor auch gleich noch seine Eingaben in Instanzvariablen speichert, besitzt die Action das Frame, und kann es jederzeit sichtbar machen).
 

HTML

Bekanntes Mitglied
okay danke aber ich weiß gar nicht was das boolean heißt, das kann ich ja nicht einfach so abschreiben oder?
was bedeutet denn das boolean und was is des überhaupt?
aber ansonsten hab ichs verstanden also trotzdem schon mal danke
 
S

SlaterB

Gast
das war doch nur ein Beispiel, wie die Klasse BAction aufgebaut ist, welche Parameter deren Konstukor hat usw.,
das weiß doch niemand außer dir, das musst du dir selber überlegen ;)

der Thread ist schon so lange und man weiß immer noch nicht was du wirklich haben willst, wo dein Problem liegt,
wenn auf Knopfdruck irgendein JFrame anzuzeigen ist, dann ist das schon ne recht komplexe Sache,
da braucht es ja erstmal ein JFrame in dem der Button angezeigt wird,
dieser muss einen ActionListener haben der auf das andere JFrame verweist und dort wird setVisible aufgerufen,

für ein Beispiel mit drei Buttons für 3 JFrames siehe hier, vielleicht erkennst du daran was dir fehlt

Code:
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class Main extends JFrame {

	

	public Main() {

		JPanel p = new JPanel();
	
		for (int i=0; i<3; i++) {
			// mehrere Buttons laden
			p.add(getButton(""+i));
		}
		
		
		getContentPane().add(p, BorderLayout.CENTER);
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		setSize(400, 150);
		setVisible(true);
	}

 	// erzeugt einen Button und ein zugehöriges Frame
	private JButton getButton(String name) {
		JFrame f = new JFrame("Frame "+name);
		f.setSize(new Dimension(200,100));
		f.setLocation(200+(int) (Math.random()*200),200+(int) (Math.random()*200));
		
		JButton b = new JButton("Button "+name);
		b.addActionListener(new B1Action(f));
		return b;
	}


	class B1Action implements ActionListener {
		private JFrame f;
		private boolean show;
		
		B1Action(JFrame newF) {
			f = newF;
		}

		public void actionPerformed(ActionEvent e) {
			show = !show; // Wechsel zwischen anzeigen und nicht anzeigen
			f.setVisible(show);
		}
	}







	public static void main(String[] args) {
		new Main();
	}
}
 

HTML

Bekanntes Mitglied
ja genau das wollte ich haben

also sorry wenn ich mich bisal deppad angestellt hab.

Merci euch 8)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben