그래서 '프레임'JPanel '패널'을 사용하여 '프레임'내 JFrame에 여러 클래스를 추가하려고하는데 효과가없는 것 같습니다.하나의 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);
}
}
내가 프로그램을 실행하면 JFrame의 흰색 배경에 나타나지만 플레이어 및 지형 클래스에서의 paintComponent 메소드가 호출되지 않는, 그래서 아무것도 다른 렌더링되고 있지 : 여기 내 메인 클래스입니다. 이 코드에 문제가 있습니까? 감사.
편집 :
플레이어 : 여기 내 플레이어 및 지형 클래스입니다
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);
}
}
지형 : 당신은 Player
및 Terrain
의 getPreferredSize
을 무시하는 데 실패했습니다
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);
}
}
문제를 설명하는 [실행 가능한 예제] (https://stackoverflow.com/help/mcve)를 제공하십시오. 이렇게하면 혼란이 줄어들고 응답이 향상됩니다. – MadProgrammer
장기 실행 코드 또는 차단 코드로 이벤트 발송 스레드를 차단할 수 있습니다. 'Player' 또는'Terrian' 클래스의'getPreferredSize'를 오버라이드 (override)하지 않았을 수 있습니다. 디폴트의 사이즈는'0x0'입니다. 'super.paintComponent'를 호출 할 수 없습니다. 모든 종류의 이상한 그림 문제를 일으 킵니다. 추측을 계속 하시겠습니까? – MadProgrammer