Witam wszystkich. Mam mały problem i juz od kilku dni nie wiem jak mogę go rozwiązać. Jestem bardzo poczatkującym programistą Javy (jeżeli tak mnie w ogołe można nazwac). Tworze graficzne menu do gry Pacman. W tej chwili jestem na etapie przełączania JPaneli. Mianowicie mam jeden JFrame z tłem i 2 JPanele z różnymi guzikami (Menu i Opcje). Chciałbym zrobić tak, że otwiera mi się główne Menu, po kliknięciu guzika Opcje w tym samym oknie przerysowuje mi sie JPanel na drugi, ten z guzikami od Opcji. Używałem sposobu:
remove(m); add(p); LaunchMenu();
, jednak albo od razu 2 panele rysują mi się na sobie, albo po jednym przejsciu (Menu->Opcje->powrót) JPanele lądują w końcu na sobie. Jak mogę się pozbyć tego problemu?
Na dole umieszczam kod źródłowy
import java.awt.Color;
public class MainMenu extends JFrame{
public MainMenu(String fname){
PanelTło p = new PanelTło(fname);
PanelTło m = new PanelTło(fname);
setTitle("Pacman");
JPanel k = new JPanel();
JPanel l = new JPanel();
k.setLayout(new BoxLayout(k, BoxLayout.Y_AXIS));
k.setBackground(new Color(0,0,0,0));
l.setLayout(new BoxLayout(l, BoxLayout.Y_AXIS));
l.setBackground(new Color(0,0,0,0));
JButton button1 = new JButton("Nowa gra");
button1.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Wcisnąłeś Nowa Gra");
}
});
JButton button2 = new JButton("Gra z serwera");
button2.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Gra z serwera");
}
});
JButton button3 = new JButton("Najlepsze wyniki");
button3.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Najlepsze wyniki");
}
});
JButton button4 = new JButton("Instrukcja");
button4.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Instrukcja");
}
});
JButton button5 = new JButton("Opcje");
button5.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
remove(p);
add(m);
LaunchMenu();
}
});
JButton button6 = new JButton("Wyjście z gry");
button6.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(1);
}
});
JButton button7 = new JButton("Zmiana języka");
button7.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Zmiana języka");
}
});
JButton button8 = new JButton("Zmiana wyglądu Pacmana");
button8.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Zmiana wyglądu");
}
});
JButton button9 = new JButton("Zmiana szaty graficznej");
button9.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Zmiana szaty graficznej");
}
});
JButton button10 = new JButton("Powrót");
button10.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
remove(m);
add(p);
LaunchMenu();
}
});
button1.setAlignmentX(Component.CENTER_ALIGNMENT);
button2.setAlignmentX(Component.CENTER_ALIGNMENT);
button3.setAlignmentX(Component.CENTER_ALIGNMENT);
button4.setAlignmentX(Component.CENTER_ALIGNMENT);
button5.setAlignmentX(Component.CENTER_ALIGNMENT);
button6.setAlignmentX(Component.CENTER_ALIGNMENT);
k.add(Box.createRigidArea(new Dimension(0,200)));
k.add(button1);
k.add(Box.createRigidArea(new Dimension(0,10)));
k.add(button2);
k.add(Box.createRigidArea(new Dimension(0,10)));
k.add(button3);
k.add(Box.createRigidArea(new Dimension(0,10)));
k.add(button4);
k.add(Box.createRigidArea(new Dimension(0,10)));
k.add(button5);
k.add(Box.createRigidArea(new Dimension(0,10)));
k.add(button6);
k.add(Box.createRigidArea(new Dimension(0,10)));
button7.setAlignmentX(Component.CENTER_ALIGNMENT);
button8.setAlignmentX(Component.CENTER_ALIGNMENT);
button9.setAlignmentX(Component.CENTER_ALIGNMENT);
button10.setAlignmentX(Component.CENTER_ALIGNMENT);
l.add(Box.createRigidArea(new Dimension(0,200)));
l.add(button7);
l.add(Box.createRigidArea(new Dimension(0,10)));
l.add(button8);
l.add(Box.createRigidArea(new Dimension(0,10)));
l.add(button9);
l.add(Box.createRigidArea(new Dimension(0,10)));
l.add(button10);
l.add(Box.createRigidArea(new Dimension(0,10)));
p.add(k);
m.add(l);
add(p);
};
public void LaunchMenu() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(1);
}
});
pack();
setLocationRelativeTo(null);
EventQueue.invokeLater(new Runnable() {
public void run() {
setVisible(true);
}
});
}
public void ZmienOpcje(JPanel m, JPanel p){
this.remove(m);
this.add(p);
LaunchMenu();
}
public static void main(String args[]) {
MainMenu menu = new MainMenu("Menu.jpg");
menu.LaunchMenu();
}
}