Panel einer Klasse in einer anderen anzeigen
lima-city → Forum → Programmiersprachen → Java
aktion
book
button
connection
eigentliche klasse
fragen
gel
gen
grad
klasse
klicken
layout
leeres panel
maske
methode
null
panel
schiffeversenken
tutorial
versuchen
-
Ich habe zwei Klasse. durch eine Aktion in der ersten Klasse m?chte ich das dass Panel der zweiten Klasse in der ersten angezeigt wird. Aber wie?
Die eigentliche Klasse mit dem contentpane:
public class SchiffeVersenken extends JFrame{
private javax.swing.JPanel jContentPane = null;
private javax.swing.JPanel getJContentPane()
{
if (jContentPane == null)
{
jContentPane = new javax.swing.JPanel();
jContentPane.setLayout(new java.awt.BorderLayout());
jContentPane.add(getJJMenuBar(), java.awt.BorderLayout.NORTH);
}
return jContentPane;
}
private javax.swing.JMenuItem getJMenuItem3() {
if(jMenuItem3 == null) {
jMenuItem3 = new javax.swing.JMenuItem();
jMenuItem3.setText("Neues Spiel");
jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()");
/*DURCH DIESE AKTION SOLL DAS PANEL DER ANDEREN KLASSE IN DIESER KLASSE ANGEZEIGT WERDEN*/
}
});
}
return jMenuItem3;
}
Die zweite Klasse. Das Panel dieser Klasse soll sich in der oberern Klasse ?ffnen
public class ConnectionPanel extends JPanel{
private javax.swing.JPanel jPanelConnection = null;
private javax.swing.JPanel getJPanelConnection() {
if(jPanelConnection == null) {
jPanelConnection = new javax.swing.JPanel();
jPanelConnection.setLayout(null);
jPanelConnection.setVisible(true);
}
return jPanelConnection;
} -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Erstaml eines vorweg:
Wieso leitest du von JPanel ab, wenn du eine JPanel Objct in der Klasse hast?
Du erweiterst die Funktionalit?t von JPanel doch gar nicht, also warum leitest du ab?
Reicht in deinem Fall nicht einfach ein Object der Klasse JPanel, welches deine Maske darstellt?
Jetzt zu deiner Frage:
Willst due es so haben, dass da ein leeres Panel ist und nach der Aktion anstatt des leeren Panels dein panel angezeigt wird?
Dann probiers entweder ?ber ein CardLayout
http://java.sun.com/docs/books/tutorial/uiswing/layout/card.html
oder
versuch es mal mit den methoden
mittelpanel.removeAll();
// Dann das Panel setzen
//...
//und dann alles neuzeichen
//z.B. mittelpanel.add(deinpanel);
mittelpanel.revalidate();
mittelpanel.repain();
So habe ich es mal in einem Projekt gel?st.
***EDIT***
mir f?llt grad ein:
Vielleicht tut es ja auch ein einfacher JDialog -
mit dem JPanel hast recht. hab es nun weggelassen und funktioniert trozdem.
habe nun auch des prob gel?st so wie ich es wollte.
bei Klick auf denn Button wird nun das Panel aus der anderen Klasse angezeigt.
habe im Connection Panel (das Panel das sich ?ffnen soll) eine setMethode() hinzugef?gt:
public void setJPanelConnection(boolean x)
{
jPanelConnection.setVisible(x);
}
und in der klasse in welcher das Panel angezeigt werden folgendes hinzugef?gt:
ConnectionPanel connectionGUI = new ConnectionPanel();
//Methode JContentPane:
//ConnectionGUI dem ContentPane hinzuf?gen aber als nicht sichtbar anzeigen
jContentPane.add(connectionGUI.getJPanelConnection());
connectionGUI.setJPanelConnection(false);
//mein JMenuItem:
public void actionPerformed(java.awt.event.ActionEvent e){
connectionGUI.setJPanelConnection(true);
} -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage