Rozumiem, więc opiszę mój problem :)
Mam 4 klasy: Panel1, Panel2, MojeOkno i MojeMenu...
Moja aplikacja w menu ma zakładkę Panel, gdzie wybieramy albo panel1, albo panel2. Niestety nie potrafię tego dobrze zrobić...
Aktualnie mam rozwiązane to tak:
public class MojeOkno extends JFrame {
/**
* @param args
*/
private Panel1 panel1;
private Panel2 panel2;
public MojeOkno(){
super(" Moja aplikacja");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1 = new Panel1();
panel2 = new Panel2();
getContentPane().add(panel1,BorderLayout.CENTER);
getContentPane().add(panel2,BorderLayout.SOUTH);
setSize(new Dimension(500,300));
setJMenuBar(new MojeMenu(panel1, panel2));
setVisible(true);
}
public void getCPane(){
System.out.println("OK");
getContentPane().add(panel2,BorderLayout.CENTER);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MojeOkno();
}
}</span>
Słuchacz MenuBar:
private class Akcja extends AbstractAction{
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("Panel1")){
panel2.setVisible(false);
panel1.setVisible(true);
}
if(e.getActionCommand().equals("Panel2")){
panel1.setVisible(false);
panel2.setVisible(true);
}....
Niestety rozwiązanie to działa, źle ponieważ drugi Panel jest na południu i okno nie jest wypełnione w 100% :( Dodanie dwóch paneli jako BorderLayout.CENTER powoduje, że ten pierwszy w ogóle nie uruchamia się...
Dlatego próbowałem zrobić coś takiego:
public class MojeOkno extends JFrame {
/**
* @param args
*/
private Panel1 panel1;
private Panel2 panel2;
public MojeOkno(){
super(" Moja aplikacja");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1 = new Panel1();
panel2 = new Panel2();
getContentPane().add(panel1,BorderLayout.CENTER);
//getContentPane().add(panel2,BorderLayout.SOUTH);
setSize(new Dimension(500,300));
setJMenuBar(new MojeMenu(panel1, panel2));
setVisible(true);
}
public void getCPane(){
System.out.println("OK");
getContentPane().add(panel2,BorderLayout.CENTER);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MojeOkno();
}
}</span>
Słuchacz MenuBar:
private class Akcja extends AbstractAction{
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("Panel1")){
panel2.setVisible(false);
add(panel2,BorderLayout.CENTER);
panel1.setVisible(true);
}
if(e.getActionCommand().equals("Panel2")){
panel1.setVisible(false);
add(panel1,BorderLayout.CENTER);
panel2.setVisible(true);
}....
Niestety takie rozwiązanie powoduję, że Panel1 lub Panel2 (w zależności od wyboru) jest dodawany do paska menu zamiast poniżej... użycie getContentPane().add(panel1,BorderLayout.CENTER); w słuchaczu menu nie wchodzi w grę, ponieważ nie widzi funkcji getContentPane()
Proszę o pomoc, bo już nie mam koncepcji żadnej... dziękuję :)