Я хотел бы знать, если в моем коде что-то отсутствует, или я что-то написал неправильно - PullRequest
0 голосов
/ 03 октября 2019

Я написал код для окна конкретной игры. И, по какой-то причине, моя доска не может быть показана в окне, если я не сделаю окно изменяемого размера. И каждый раз, когда я запускаю свою программу, мне нужно немного изменить размер окна, чтобы показать мою доску. Надеюсь, вы поняли и надеетесь, что вы можете мне помочь.

КОД:

import javax.swing.JFrame;

public class Window 
{
   public static final int WIDTH = 307, HEIGHT = 637;
   private JFrame window;
   private Board board;

public Window()
{
    window = new JFrame("TETRIS");
    window.setSize(WIDTH, HEIGHT);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setResizable(true);
    window.setLocationRelativeTo(null);
    window.setVisible(true);

    board = new Board();
    window.add(board);
    window.addKeyListener(board);   
}

public static void main(String[] args) 
{
    new Window();
}
}

Я не был уверен, нужно ли мне писать здесь код платы, поэтому я просто написал первые строки.

import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
import javax.swing.Timer;
import java.awt.event.ActionListener;

public class Board extends JPanel implements KeyListener
{
    private static final long serialVersionUID = 1L;


    private BufferedImage blocks;
    private Shape[] shapes = new Shape[7];
    private Shape currentShape;
    private Timer timer;

    private final int blockSize = 30;
    private final int boardWidth = 10, boardHeight = 20;
    private int [][] board = new int [boardHeight][boardWidth];
    private final int FBS = 60;
    private final int delay = 1000/60;

    private boolean gameOver = false;

...

Заранее спасибо!

1 Ответ

0 голосов
/ 03 октября 2019

Java имеет поток, отвечающий за события представления, поэтому вы должны изменить свойства представления:

 public static void main(String[] args) 
 {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
             new Window();
        }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...