Я пытаюсь создать пользовательский интерфейс с парой JPanels. У меня есть заголовок вверху, затем главная панель, которая содержит меню с кнопкой, игровую панель, партитуру внизу, и я использую .pack (), чтобы все измерить. Проблема в том, что игровая панель почти не появляется.
Это код JFrame
package tron;
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.*
public class Tron extends JFrame
{
private GamePanel gamePanel = new GamePanel();
private MenuPanel menuPanel = new MenuPanel();
private ScorePanel scorePanel = new ScorePanel(0 , Color.CYAN);
public Tron()
{
initGUI();
setTitle("Tetris");
setResizable(false);
pack();
setLocationRelativeTo(null);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void initGUI()
{
TitleLabel titleLabel = new TitleLabel("Tron");
add(titleLabel, BorderLayout.PAGE_START);
JPanel mainPanel = new JPanel();
mainPanel.setBackground(Color.red);
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
add(mainPanel, BorderLayout.CENTER);
mainPanel.add(menuPanel);
mainPanel.add(gamePanel);
mainPanel.add(scorePanel);
}
public static void main(String[] args)
{
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Tron().setVisible(true);
}
});
}
}
Панель показателей, панель меню и метка заголовка работают нормально, поэтому вот код для игровой панели.
package tron;
import java.awt.*;
import javax.swing.JPanel;
public class GamePanel extends JPanel
{
private int WIDTH = 800, HEIGHT = 700;
public GamePanel()
{
}
public Dimension getPerferredSize()
{
Dimension size = new Dimension(WIDTH, HEIGHT);
return size;
}
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
g2.setColor(Color.red);
g2.fillRect(0, 0, WIDTH, HEIGHT);
}
}
Мне нужна большая красная область 800x700, но я получаю:
![JFrame window with the wrong size](https://i.stack.imgur.com/zAsY4.png)
Красный цвет слишком мал, а не 800x700, который яокрашена. Мне просто интересно, как я могу сделать его нужного размера.
спасибо.