2017-03-26 15 views
0

자바에서 게임을 만들고 있는데 내 jframe에 jcomponents 이상을 추가 할 수 없습니다. 이미 jpanel과 컨테이너에 추가하려고했습니다. Border 클래스를 JComponent 대신 JPanel로 확장하려고 시도했습니다. 미리 감사드립니다. 문제의내 3 개의 JComponents 중 2 개만 내 JFrame에 표시됩니다.

영상

enter image description here

메인 클래스

import java.awt.Color; 
import java.awt.Container; 
import java.awt.FlowLayout; 
import java.awt.Graphics; 
import java.awt.Point; 
import java.awt.Rectangle; 
import java.awt.Shape; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 
import java.awt.geom.Area; 
import java.awt.geom.Rectangle2D; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class game implements KeyListener { 
public static JFrame window = new JFrame("Escape"); 
public static int velX = 0, velY = 0, count = 0; 
public static Boolean paused = false, leftLock = false; 
public Player player, playerTwo; 
public static Movement playerMove; 
public static Collision coll; 
public static Area playerArea, playerTwoArea; 
public Border b; 

game() { 
    player = new Player(); 
    playerTwo = new Player(); 
    b = new Border(10,10); 
    window.setSize(1000, 500); 
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    window.setResizable(false); 
    window.addKeyListener(this); 
    window.add(new Border(0,0)); 
    window.add(new Border(200,200)); 
    window.add(new Border(400,400)); 
    window.setVisible(true); 
    playerMove = new Movement(); 
    coll = new Collision(); 
} 
public static void main(String[] args) { 
    new game(); 
    } 
} 

내 국경 클래스

import java.awt.*; 
import javax.swing.*; 

public class Border extends JComponent { 
    private int x, y; 

Border(int x, int y) { 
    this.x = x; 
    this.y = y; 
} 
public void paintComponent(Graphics g) { 
    g.setColor(Color.BLUE); 
    g.fillOvel(x,y,50,50); 
    } 
} 
+0

레이아웃 관리자를 지정하는 곳이 보이지 않습니다 ... 널 레이아웃을 사용하고 있습니까? – MeBigFatGuy

+0

예. 저는 이것을 사용하고 있습니다. –

답변

0

임의의 (그리고 많은) 도형을 그리는 경우 JComponents를 사용해서는 안됩니다. 난 그냥 창에 하나의 JPanel을 배치하고, paintComponents 메소드를 오버라이드하고, 그 하나의 메소드에서 모든 서클에 대한 모든 드로잉을 수행한다.

+0

내가 그런 식으로한다면 플레이어와 적을 어떻게 움직일 수 있을까요? 나는 멀티 플레이어로 만들 계획이다. –

+0

나는 원을 그려서 거기에 머물고 싶지 않다. –

+0

나는 지금 바보 같은 느낌 : –