У меня есть основной класс, который создает экземпляр JFrame
и JPanel
, и я установил JPanel
как publi c, чтобы я мог получить к нему доступ из другого класса, чтобы добавить в него больше вещей (я не Не знаю, так ли это работает, это просто мой лог c).
public class Main {
private JFrame obj;
public Gameplay gamePlay;
public Main() {
obj = new JFrame();
gamePlay = new Gameplay();
}
public void execute() {
//properties of the jframe
obj.setBounds(10, 10, 700, 600);
obj.setTitle("Brick breaker");
obj.setResizable(false);
obj.setVisible(true);
obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//add the jpanel inside the jframe
obj.add(gamePlay);
}
public static void main(String[] args) {
Main main = new Main();
main.execute();
}
}
Затем у меня есть другой класс с именем Gameplay
, который расширяет JPanel
. Один из методов внутри JPanel должен рисовать объекты внутри JPanel и добавлять метку, когда условие истинно.
Обратите внимание, что закомментированная область в конце, где «ИГРА ЗАВЕРШЕНА» нарисована с графикой g
он работает правильно, но я хочу вместо этого поставить метку, потому что я хочу использовать собственный шрифт. Ярлык никогда не появляется. Все остальные вещи, которые должен рисовать метод pait()
, также работают нормально.
public void paint(Graphics g) {
//background
g.setColor(Color.black);
g.fillRect(1, 1, 692, 592);
//more code of drawing things
//...
if(ballposY > 570) {
play = false;
ballXdir = 0;
ballYdir = 0;
lblGameOver = new JLabel("GAME OVER");
lblGameOver.setForeground(Color.green);
lblGameOver.setFont(pixels);//custom font
Main main = new Main();
main.gamePlay.add(lblGameOver);
//g.setColor(Color.green);
//g.setFont(new Font("serif", Font.BOLD, 30));
//g.drawString("GAME OVER", 250, 300);
}
g.dispose();
}