Я в основном пытался создать меню для игры, используя JFrame и отключая 2 JPanels (один для меню и один для реальной игры). Я пытаюсь реализовать самый простой формат, о котором я могу думать, но не могу заставить его работать. Если кто-нибудь может объяснить, что не так с кодом, я был бы признателен.Использование нескольких JPanels в одном JFrame
Вот мой JFrame, панель меню и ActionListener
package buttonMenu;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Skeleton extends JFrame implements ActionListener{
JPanel menu;
JButton button;
public Skeleton(){
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(400, 400);
setVisible(true);
menu = new JPanel();
button = new JButton("button");
menu.setSize(400, 400);
menu.setBackground(Color.BLACK);
menu.setVisible(true);
menu.add(button);
button.setLocation(200, 200);
button.addActionListener(this);
add(menu, BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent a){
JPanel panel = Game.Game();
this.remove(menu);
this.add(panel);
}
public static void main(String args[]){
new Skeleton();
}
}
actionPerformed вызывает панель, созданную в этом классе
package buttonMenu;
import java.awt.Color;
import javax.swing.JPanel;
public class Game{
public static JPanel Game(){
JPanel panel = new JPanel();
panel.setSize(400, 400);
panel.setBackground(Color.WHITE);
return panel;
}
}
Опять же, если кто-нибудь может объяснить мне, что случилось с этим кодом I был бы признателен. Благодаря
Спасибо за совет, я никогда не использовал revalidate, но он работает сейчас. Кроме того, спасибо за ссылку, похоже, что макет карты - это путь. –