2012-05-15 3 views
1

JPanel이 있는데 여기에 JLabel을 필요한 좌표로 추가해야합니다. 이 JLabel에는 화살표 키를 사용하여 새 위치를 결정하는 키 수신기가 할당됩니다.좌표를 지정하는 원하는 위치에 JLabel을 놓습니다.

좀 더 구체적으로 말해서 하나만있을 때 어떻게해야하는지 알고 있습니다. 그러나 그 중 많은 것을 넣을 때마다 엉망입니다. 처음에는 화살표 키를 사용하지만 JLabel은 이동하지만 다른 모든 것은 JLabel이 사라집니다.

누구나 JLabel을 특정 좌표에 넣고 나중에 JLabel을 사라지게하지 않고 화살표 키를 사용하여 이동할 수있는 방법을 알려줄 수 있습니까? 사전

+1

같은 것을 사용할 수 있습니다, 당신은 몇 가지 관련 코드 조각을 게시해야합니다. –

+0

[SSCCE] (http://sscce.org) – COD3BOY

+0

를 게시하십시오. 목록에있는 모든 레이블을 추가하고 화살표 키 내부에 목록을 추가하고 목록을 이동하십시오. 만약 당신이 하나 하나의 레이블을 자신의 것으로 옮기고 싶다면 어떤 것을 움직일지를 알기위한 일종의 "select"메소드를 구현해야합니다. 코드의 관련 부분을 게시하면 도움이 될 것입니다. :) – mastaH

답변

1

JDesktopPane 또는 JLayeredPane을 사용해보십시오. JPanels와 동일하게 작동하지만 레이아웃을 사용하지 않을 것입니다.이 경우 Bounds를 사용할 것이므로 항상 이와 같은 jlabel의 경계를 설정해야합니다. 당신이 레이블을 이동해야하는 경우

JLabel label = new JLabel("Hello"); 
label.setBounds(0, 0, 100, 20); 
//label.setBounds(x, y, width, height); 
pane.add(label) 

, 당신은 내가 생각

int xx = label.getBounds().getX(); 
int yy = label.getBounds().getY(); 
int ww = label.getBounds().getWidth(); 
int hh = label.getBounds().getHeight(); 

//to the right 10 units 
xx+=10; 
label.setBounds(xx, yy, ww, hh); 
+0

고맙습니다. 거의 제가 발견 한 것이 었습니다. 그렇습니다. –

0

에서

거대한 덕분에 나는 당신이 UI를 업데이트 할 repaint()를 사용하는 가정합니다. Btw, 어느 구성 요소에 repaint()?

+1

SwingWorker가 OP가 원하는 것과 어떤 관계가 있습니까? :) –

+0

이에 따라 조정. 나는 UI에서 뭔가가 일어나고 있다고 생각했지만 인터페이스를 디자인하는 것은 캔버스와 같다는 것을 깨달았다. –

+0

repaint()를 사용하고 있지 않습니다. 사실 넷빈에서 프로젝트를 수행 했으므로 방금 JLabel을 이동하는 메소드를 작성했습니다. 다른 JLabel을 추가 할 때까지 제대로 작동합니다. –

관련 문제