Итак, я пытаюсь добавить несколько классов в «фрейм» JFrame с помощью панели JPanel, но это, похоже, не имеет никакого эффекта. Вот мой основной класс:Как добавить несколько классов в один JFrame?
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Frame
{
public static void main (String[] args)
{
JPanel panel = new JPanel();
panel.setBackground (Color.WHITE);
panel.add (new Player()); // Class with paintComponent method.
panel.add (new Terrain()); // Class with paintComponent method.
JFrame frame = new JFrame ("Java Game");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.setSize (1000, 600);
frame.getContentPane().add (panel);
frame.setVisible (true);
}
}
Когда я запускаю программу, фрейм появляется с белым фоном, но методы paintComponent от игрока и классов Terrain не называют, так что ничего не визуализируется. Что-то не так с этим кодом? Благодарю.
Edit: Вот мои игрока и Рельефный классы:
игрока:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JComponent;
@SuppressWarnings ("serial")
public class Player extends JComponent
{
int x = 50;
int y = 450;
public void paintComponent (Graphics graphics)
{
graphics.setColor (Color.BLACK);
graphics.fillRect (x, y, 50, 50);
}
}
Местность:
import java.awt.Graphics;
import java.awt.Color;
import javax.swing.JComponent;
@SuppressWarnings ("serial")
public class Terrain extends JComponent
{
Player playerClass = new Player();
public void paintComponent (Graphics graphics)
{
graphics.setColor (Color.GREEN);
graphics.fillRect (0, 500, 1000, 500);
}
}
Рассмотрите возможность использования [runnable example] (https://stackoverflow.com/help/mcve), который демонстрирует вашу проблему. Это приведет к меньшему путанице и лучшим ответам. – MadProgrammer
Вы можете блокировать поток событий Dispatching с длинным ходом или кодом блокировки; Возможно, у вас не было переопределенного 'getPreferredSize' классов' Player' или 'Terrian', заставляя их выкладываться с размером по умолчанию' 0x0'; Вы не могли бы называть 'super.paintComponent', вызывать всевозможные странные проблемы с живописью; Хочешь, я продолжу гадать? – MadProgrammer