Panels wechseln auf Knopfdruck

B

Britta_90

Gast
Hallo Leute!

Ich bin verzweifelt und weiß nicht weiter! Ich habe zwei Panels mit NetBeans erstellt und möchte gerne, dass wenn man einen Knopf im ersten Panel drückt, das zweite erscheint.

Ausschnitte aus meinem Code:

[Java]
public class Frame extends JFrame {

Dimension dim = new Dimension(1024, 768);
Panel1 panel1;
Panel2 panel2;
Container[] panel;

[/Java]

[Java]
private void createArray(){
panel = new Container[2];
panel[0] = panel1;
panel[1] = panel2;
}
[/Java]

[Java]
private void setPane(int i){
setContentPane(panel[i-1]);
panel[i-1].setSize(dim);
}
[/Java]

[Java]
public static void main(String args[]) throws InterruptedException {
Frame frame = new Frame();
frame.setVisible(true);
frame.setPane(1);

//Was muss ich hier machen?

frame.setPane(2);
};
[/Java]

In der Klasse Panel1:

[Java]
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
//Was muss ich hier machen?
}
[/Java]

So, meine Frage: Ich weiß, dass ich irgendetwas mit wait() und notify() machen muss, aber ich weiß nicht weiter :(. Kann mir jemand helfen?

Und noch eine Frage: Ich habe ja ein Array angelegt, in welchem zwei Objekte die durch unterschiedliche Klassen generiert wurden, erstellt. Dazu folgendes Problem:

Ich habe in den Klassen "Panel1" und "Panel2" jeweils das Attribut "int XXX". Nun kann ich jedoch leider nicht per "panel[1].XXX" auf dieses Attribut zugreifen und es dynamisch machen, wenn ich z.B. von Panel1 und Panel2 mit einer Schleife diese beiden Attribute addieren will. Wie kann ich das denn realisieren?

Grüße,

Eure Britta!
 

Michael...

Top Contributor
Ich bin verzweifelt und weiß nicht weiter! Ich habe zwei Panels mit NetBeans erstellt und möchte gerne, dass wenn man einen Knopf im ersten Panel drückt, das zweite erscheint.
Verwende CardLayout, dieser LayoutManager ist dafür gedacht, dass man während der "Laufzeit" problemlos zwischen Komponenten wechseln kann.
So, meine Frage: Ich weiß, dass ich irgendetwas mit wait() und notify() machen muss
Woher? Hilft Dir in dem Fall nicht weiter.
Und noch eine Frage: Ich habe ja ein Array angelegt, in welchem zwei Objekte die durch unterschiedliche Klassen generiert wurden, erstellt. Dazu folgendes Problem:

Ich habe in den Klassen "Panel1" und "Panel2" jeweils das Attribut "int XXX". Nun kann ich jedoch leider nicht per "panel[1].XXX" auf dieses Attribut zugreifen und es dynamisch machen, wenn ich z.B. von Panel1 und Panel2 mit einer Schleife diese beiden Attribute addieren will. Wie kann ich das denn realisieren?
Verstehe es nicht zu 100%: Lösungsansätze Methoden (getter und setter) Ausserdem sollte das Array vom Typ der Klassen sein, d.h. eventuell ein Interface verwenden.
 
B

Britta_90

Gast
Woher? Hilft Dir in dem Fall nicht weiter.

Was muss ich denn dann machen, dass wenn der Knopf gedrückt wird sich die Panels wechseln?

Verstehe es nicht zu 100%: Lösungsansätze Methoden (getter und setter) Ausserdem sollte das Array vom Typ der Klassen sein, d.h. eventuell ein Interface verwenden.

Wenn ich folgendes mache:

[Java]

panel[1] = panel1;

[/Java]

Und nun darauf eine Methode anwenden will, so funktioniert panel1.methode() perfekt, jedoch panel[1].methode() eben nicht. Was kann ich gegen dieses Problem machen?
 

jgh

Top Contributor
einfach casten:

Java:
((Panel1)panel[1]).methode();
 
Zuletzt bearbeitet:
B

Britta_90

Gast
einfach casten:

Java:
((Panel1)panel[1]).methode();

Das ist lieb gemeint, aber bringt mich leider nicht viel weiter. Würde das ganze gerne dynamisch gestalten, hier habe ich ja wieder das "Panel1" drin. Möchte gerne (später) so etwas gestalten wie

[Java]
int total = 0;

for (int i = 1; i < 10; i++){
total = panel.getXXX() + total;
}
[/Java]

Was aber ja leider so nicht geht.
 
B

Britta_90

Gast
Das ist lieb gemeint, aber bringt mich leider nicht viel weiter. Würde das ganze gerne dynamisch gestalten, hier habe ich ja wieder das "Panel1" drin. Möchte gerne (später) so etwas gestalten wie

[Java]
int total = 0;

for (int i = 1; i < 10; i++){
total = panel.getXXX() + total;
}
[/Java]

Was aber ja leider so nicht geht.


Ok, habe es mit Hilfe eines Interfaces selbst hinbekommen, danke Michael... für den Tipp :).

Nur wie mache ich, dass sich das Panel wechselt, sobald ich im ersten Panel einen Knopf drücke?
 

Volvagia

Top Contributor
?

Java:
import java.awt.CardLayout;
import java.awt.Color;
import java.util.concurrent.TimeUnit;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Card
{
	public static void main(String[] args)
	{
		final JFrame frame = new JFrame();
		final CardLayout layout = new CardLayout();
		frame.setLayout(layout);
		frame.setSize(200, 200);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel panelA = new JPanel();
		panelA.setBackground(Color.RED);
		frame.add(panelA, "A");
		
		JPanel panelB = new JPanel();
		panelB.setBackground(Color.BLUE);
		frame.add(panelB, "B");
		
		new Thread() {
			public void run() {
				try
				{
					TimeUnit.SECONDS.sleep(3L);
				}
				catch (InterruptedException e) {}
				
				layout.show(frame.getContentPane(), "B");
			};
		}.start();
		
		frame.setVisible(true);
	}
}
 

L-ectron-X

Gesperrter Benutzer
Vielleicht noch ein Tipp, der jede Menge Ärger ersparen könnte:
Sachen wie
[Java]
public class Frame extends JFrame
[/Java]
und daraus folgend
Java:
            Frame frame = new Frame();
[/Java]
können dir Ärger machen und zu unerwünschen Ergebnissen führen.

Du solltest vermeiden, Klassen so zu benennen, wie die aus der Java-API.
Frame ist eine Klasse aus java.awt. Es genügt eine falsche Import-Anweisung und schon wunderst du dich, warum nichts mehr geht.
 
B

Britta_90

Gast
Stimmt, ich wollte den Code bloß nicht zu verkomplizieren, sie will es eh im Listener (=EDT) machen. ^^

Wie genau muss ich da vorgehen? Ich habe leider überhaupt keine Ahnung :(

Also ich habe bisher das hier in einer meiner Panel Klassen:

[Java]
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

}
[/Java]

Nur wie muss ich das bei Volvagias Code (welches meine Frame Klasse ist) statt der "sleep" Methode einbringen?
 
B

Britta_90

Gast
Das Sleep kannst du weglassen, war nur damit nicht sofort umgeschalten wird.

Das habe ich nicht gemeint. Ich möchte erst gerne umschalten, wenn ein Knopf von meinem Panel1 gedrückt wird.

Habe es derzeit so

In meiner Frame Klasse:

[Java]
//Vor dem Umschalten

while(frame.panel1.wait == false){
Thread.sleep(300);
}

//Nach dem Umschalten
[/Java]

In der Klasse Panel1:

[Java]
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
wait = true;
}
[/Java]

Es tut, aber sicher geht es doch elleganter?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Zwischen verschiedenen Panels wechseln AWT, Swing, JavaFX & SWT 3
P Swing Panels Wechseln AWT, Swing, JavaFX & SWT 9
G Zwischen Panels in einem JFrame wechseln AWT, Swing, JavaFX & SWT 4
H Mehrere Panels auf JFrame AWT, Swing, JavaFX & SWT 8
I GUI, das verschiedene Panels hat (Von Seite zu Seite navigieren) AWT, Swing, JavaFX & SWT 7
G LayoutManager Panels anordnen über Schleifenvariablen AWT, Swing, JavaFX & SWT 7
B Bounds aller Panels aktualisieren AWT, Swing, JavaFX & SWT 0
B veränderte Größe eines Panels im Vorhinein wissen? AWT, Swing, JavaFX & SWT 1
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
L Swing Panels bewegen wie Windows 10 Kacheln AWT, Swing, JavaFX & SWT 0
G LayoutManager Beliebige Anzahl von Panels für LayoutManager AWT, Swing, JavaFX & SWT 3
T Swing Bug: mehrfache Panels bei Mouseover? AWT, Swing, JavaFX & SWT 11
F abgeleitete Panels von einem ContentPanel AWT, Swing, JavaFX & SWT 4
K Event Handling Über JMenuBar die diversen Panels anzeigen AWT, Swing, JavaFX & SWT 10
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
R Swing panels nebeneinander mit BoxLayout.X_AXIS AWT, Swing, JavaFX & SWT 4
D Swing Komponenten Anordnung eines Panels in Verbindung eines weiteren Panels AWT, Swing, JavaFX & SWT 9
R KeyListener in mehreren Panels AWT, Swing, JavaFX & SWT 5
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
Thallius Swing Mehrere tausend "Panels" erstellen AWT, Swing, JavaFX & SWT 3
P Drag & Drop zwischen Panels AWT, Swing, JavaFX & SWT 0
V AWT Panels überlappen AWT, Swing, JavaFX & SWT 1
K Panels mit eigenen Controllern in Main-View einbauen AWT, Swing, JavaFX & SWT 4
U Swing Panels im Contentpane durchschalten AWT, Swing, JavaFX & SWT 1
M Handling 1 Fenster mehrere Panels AWT, Swing, JavaFX & SWT 2
S Swing Plätze von 2 panels vertauschen AWT, Swing, JavaFX & SWT 4
T Panels mit Button verbinden AWT, Swing, JavaFX & SWT 3
F Swing Wie verwalte ich meine Panels richtig? AWT, Swing, JavaFX & SWT 2
Q CardLayout, ausgelagerte Panels, ActionListener AWT, Swing, JavaFX & SWT 5
Java-Insel LayoutManager Ein GridBagLayout-Objekt für mehrere Panels? AWT, Swing, JavaFX & SWT 2
D Stapelung von Panels AWT, Swing, JavaFX & SWT 6
V Swing MouseEvents bei gestapelten Panels AWT, Swing, JavaFX & SWT 2
B JApplet zwei Panels autobreite? AWT, Swing, JavaFX & SWT 2
kodela Teil eines Panels als Graphik speichern AWT, Swing, JavaFX & SWT 3
Kenan89 LayoutManager MigLayout Positionierung von Panels AWT, Swing, JavaFX & SWT 4
A Panels in JavaFX zur Laufzeit erzeugen AWT, Swing, JavaFX & SWT 5
D JButton-Click in JList mit Panels (auf dem der Button ist) AWT, Swing, JavaFX & SWT 6
L Mehre Panels einen Frame zuweisen AWT, Swing, JavaFX & SWT 11
F Panels über buttons zu anderen Panels hinzufügen AWT, Swing, JavaFX & SWT 2
X Swing Resizing der Komponenten innheralb eines Panels AWT, Swing, JavaFX & SWT 2
J Problem mit der Höhe eines Panels AWT, Swing, JavaFX & SWT 11
M Swing JTabbedPane Panels deaktivieren AWT, Swing, JavaFX & SWT 2
S Swing (Nicht) Vergrößern von Panels AWT, Swing, JavaFX & SWT 3
S Drag and Drop über 2 Panels AWT, Swing, JavaFX & SWT 2
B LayoutManager Zeilenweise Anordnung von Panels AWT, Swing, JavaFX & SWT 19
N Hilfe bei Panels! AWT, Swing, JavaFX & SWT 11
J LayoutManager Panels übereinander AWT, Swing, JavaFX & SWT 3
P Von einem Panel auf die Objekte des anderen Panels zugreifen AWT, Swing, JavaFX & SWT 3
C Aufklappbare Panels AWT, Swing, JavaFX & SWT 2
D Panels Dynamisch zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 2
D Vererbung von Panels AWT, Swing, JavaFX & SWT 8
E Wie Breite und Höhe eines Panels festlegen? AWT, Swing, JavaFX & SWT 5
B Panels stapeln, geht das? AWT, Swing, JavaFX & SWT 7
I 2 Panels übereinander, 1 transparent AWT, Swing, JavaFX & SWT 2
S GridBagLayout Panels AWT, Swing, JavaFX & SWT 2
W Panels vertikal anordnen AWT, Swing, JavaFX & SWT 10
R Swing Kommunikation zwischen Panels AWT, Swing, JavaFX & SWT 2
F Abschaltbare Panels AWT, Swing, JavaFX & SWT 5
aze Layout auf Teil eines Panels anwenden AWT, Swing, JavaFX & SWT 5
M Swing Alle Elemente eines Panels? AWT, Swing, JavaFX & SWT 9
I Swing Positionieren von Panels mit layoutManager AWT, Swing, JavaFX & SWT 6
B Java Grafiken an bestimmter Positon des Panels anzeigen AWT, Swing, JavaFX & SWT 6
S import von Klassen (zwei Panels eine Form) AWT, Swing, JavaFX & SWT 39
K Zwei Panels zentriert anordnen AWT, Swing, JavaFX & SWT 3
H2SO3- AWT seltsammes verhalten eines Panels AWT, Swing, JavaFX & SWT 9
S Buttons, Panels etc. zu einer Teilkomponente hinzufügen AWT, Swing, JavaFX & SWT 5
S mehere panels übereinander AWT, Swing, JavaFX & SWT 2
Z Swing Gif's in panels einfügen AWT, Swing, JavaFX & SWT 11
N Überschneidung von Panels umgehen AWT, Swing, JavaFX & SWT 3
D java.lang.IllegalArgumentException beim Darstellen eines Panels AWT, Swing, JavaFX & SWT 7
T Border eines Panels nicht an der rechten Kante anzeigen AWT, Swing, JavaFX & SWT 7
F name des panels in der ein button liegt rausfinden AWT, Swing, JavaFX & SWT 10
R AWT: Aufteilung mit Panels? AWT, Swing, JavaFX & SWT 2
L Focus für KeyListener auf verschiedene Panels AWT, Swing, JavaFX & SWT 2
G Ein Frame mit mehreren austauschbaren Panels AWT, Swing, JavaFX & SWT 3
I Applet mit Panels (so richtig, gehts besser?) AWT, Swing, JavaFX & SWT 3
G designfrage zu 2 panels AWT, Swing, JavaFX & SWT 2
hdi zeitgleiches fokusieren von zwei panels AWT, Swing, JavaFX & SWT 2
G 2 Panels, 2 Listener, 1 Problem AWT, Swing, JavaFX & SWT 2
G Im applet auf panels zeichnen AWT, Swing, JavaFX & SWT 9
G Im Applet Panels anzeigen lassen AWT, Swing, JavaFX & SWT 2
G Editierbarkeit aller Komponenten eines Panels AWT, Swing, JavaFX & SWT 5
R Kleine Panels auf einem großen Panel frei platzieren AWT, Swing, JavaFX & SWT 11
G Remove Panels von JFrame AWT, Swing, JavaFX & SWT 5
M Ausrichtung eines Panels AWT, Swing, JavaFX & SWT 7
H Frames oder Panels für mehrere Ansichten? AWT, Swing, JavaFX & SWT 4
M Problem mit Cursor für Panels AWT, Swing, JavaFX & SWT 4
Kidao Mehrer Panels, mit Buttons in einem Frame abwechselnd laden? AWT, Swing, JavaFX & SWT 3
M Hallo Herr Uhres, Frage zu DND_Demo: Ausrichten der Panels:) AWT, Swing, JavaFX & SWT 4
O Panels ein und ausblenden - geht das? AWT, Swing, JavaFX & SWT 3
O eine Frage zu Panels AWT, Swing, JavaFX & SWT 10
M Problem bei Repaint von Panels AWT, Swing, JavaFX & SWT 2
M Größe des Panels ändern? AWT, Swing, JavaFX & SWT 3
O haben panels von anfang an einen dummen rand? AWT, Swing, JavaFX & SWT 19
M JTree und Anzeige des entsprechenden Panels AWT, Swing, JavaFX & SWT 5
M JList mit unbestimmter Anzahl Panels füllen AWT, Swing, JavaFX & SWT 4
K 2 Panels und Layouts AWT, Swing, JavaFX & SWT 2
K abstände zwischen Panels? AWT, Swing, JavaFX & SWT 3
U suchverfahren vergleich einbinden von panels ? in applet ;) AWT, Swing, JavaFX & SWT 11

Ähnliche Java Themen

Neue Themen


Oben