Итак, у меня есть графический интерфейс с кнопкой для запуска игры. МенюПанель представляет собой главную панель, где должно появиться все. Фактический проект более сложный, но здесь я кратко изложил проблему. Существует главная:Почему панель не появляется?
package bbGame;
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 Main {
public static void main(String[] args) {
JFrame gameFrame = new JFrame();
gameFrame.setSize(700, 600);
gameFrame.setVisible(true);
JPanel menuPanel = new JPanel();
menuPanel.setLayout(null);
menuPanel.setBounds(0, 0, 700, 600);
menuPanel.setBackground(new Color(243, 207, 252));
menuPanel.setVisible(true);
gameFrame.add(menuPanel);
JButton startBricksBreakerButton = new JButton();
startBricksBreakerButton.setText("START BRICKS BREAKER");
startBricksBreakerButton.setLayout(null);
startBricksBreakerButton.setBounds(250, 200, 180, 50);
startBricksBreakerButton.setBackground(new Color(37, 242, 10));
startBricksBreakerButton.setVisible(true);
menuPanel.add(startBricksBreakerButton);
startBricksBreakerButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
menuPanel.removeAll();
BricksBreakerGame bbGame=new BricksBreakerGame();
menuPanel.add(bbGame);
bbGame.setVisible(true);
menuPanel.repaint();
}
});
}}
Существует игра. Это еще не сделано, но оно отображает что-то (без ошибок).
package bbGame;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
import javax.swing.Timer;
public class BricksBreakerGame extends JPanel implements KeyListener, ActionListener {
private boolean play = false;
private int score = 0;
private int totalBricks = 21;
private Timer time;
private int speed = 8;
private int playerX = 310;
private int ballposX = 120;
private int ballposY = 350;
private int ballXdir = -1;
private int ballYdir = -2;
public BricksBreakerGame() {
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
// timer = new Timer(delay, this);
// timer.start();
}
public void paint(Graphics g) {
// background
g.setColor(Color.black);
g.fillRect(1, 1, 692, 592);
// borders
g.setColor(Color.yellow);
g.fillRect(0, 0, 3, 592);
g.fillRect(0, 0, 692, 3);
g.fillRect(691, 0, 3, 592);
// the paddle
g.setColor(Color.green);
g.fillRect(playerX, 550, 100, 8);
// the ball
g.setColor(Color.yellow);
g.fillRect(ballposX, ballposY, 20, 20);
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
if (playerX >= 600) {
playerX = 600;
} else {
moveRight();
}
}
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
if (playerX < 100) {
playerX = 100;
} else {
moveLeft();
}
}
}
private void moveRight() {
play = true;
playerX += 20;
}
private void moveLeft() {
play = true;
playerX -= 20;
}
@Override
public void keyReleased(KeyEvent arg0) {
}
@Override
public void keyTyped(KeyEvent arg0) {
}}
Когда я нажимаю кнопку startBricksBreaker, панель, порожденную классом BricksBreakerGame это не показывая вверх. Что не так? У меня нет ошибок, но игровая панель не появляется. Я предполагаю, что есть проблема с методом actionPerformed, но я не знаю, что там не так ... Я довольно новичок в Java ...