2011-11-16 4 views

답변

2

하위 클래스 JLabel을 사용하고 페인트 메서드를 재정의합니다.

public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    // paint player location on map 
} 

게임 좌표에서지도의 좌표로 변환하십시오.

+1

@trashgod이 그것을 변경 할 수 있습니다. 당신 말이 맞아요, 저는 항상'paintComponent()'를 직접하지만 저는 그것을 간과해야합니다. 그것을 잡아 주셔서 감사합니다. –

+0

고맙습니다. 그래픽으로 그리는 법을 배워야합니다. 지금까지는 ImageIcon을 JLabel과 직접 만 사용했습니다. – Xdg

+0

@Dacesilian [Java 그래픽 자습서] (http://download.oracle.com/javase/tutorial/2d/index.html) Java에서 2D 그래픽을 작성하는 것이 어렵지 않습니다. D –

2

paintComponent() 대신 OverlayLayout (here)을 볼 수도 있습니다. 어떤 이유로 든 gallery에는 포함되어 있지 않지만 사용 가능할 수 있습니다.

+1

재미있는, 나는 언젠가 그것으로 놀아야 할 것이다. –

+1

은 항상 처음부터 레이아웃의 결과를 예측하고 정렬을 변경할 때 (내 자신의 무덤을 여기에서 파고 :-) b) Z 순서에 관한 것 같지 않습니다. (순진하게 기대 하듯이) 심지어는 무관계 : 롤오버에서 버튼이 위에 칠해집니다 .. c) 서로에 대한 계층화 된 구성 요소의 배치 (OP의 요구 사항 임) 가능한. – kleopatra

2

좋은 솔루션입니다 확실히

재정의 paintComponent :-) 새로운 jdk7 API를 함께 플레이 할 수있는 기회로이 질문을 저항 할 수 없습니다. 그럼에도 불구하고, 뭔가 다른 것들 위에 주어진 위치에 무언가를 칠하는 것만으로 서브 클래스 화가 필요합니다. 그렇게하는 방법은 JLayeredPane (처리 할 고통)입니다. 새로운 JDK에는 JLayer 구성 요소가있어 간단한 구성으로 구성 할 수 있습니다. 여기에 코드 조각입니다 :

  • 은 레이어의 glassPane에 "선수"이미지를 추가 JLayer를 기본 이미지와 레이블이 기본와 함께 장식은
  • 는에 Rob's DragLayout합니다 (의 glassPane에 세트)를 사용 두 개의 슬라이더

작동 코드 (그냥 외부 보일러 플레이트는 모두 :)

에서 그 스틱 당신의 템플릿이 누락 맨 손으로 뼈 UI, 주위 플레이어를 이동 018,343,210

빠른 아이콘 : 이전 버전의 JDK를 들어

public static class CursorIcon implements Icon { 

    private int size; 

    public CursorIcon(int size) { 
     this.size = size; 
    } 

    @Override 
    public void paintIcon(Component c, Graphics g, int x, int y) { 
     g.setColor(Color.red); 
     g.drawLine(size/2,y,size/2,size); 
     g.drawLine(x,size/2,size,size/2); 
    } 

    @Override 
    public int getIconWidth() { 
     return size; 
    } 

    @Override 
    public int getIconHeight() { 
     return size; 
    } 
} 

SwingLabs subproject JXLayer

+0

@camickr 멋진 layoutManager :-) – kleopatra

관련 문제