2017-02-03 3 views
-1

JTextArea에 문제가 생겨서 매우 귀찮습니다.JTextArea는 화면의 정확한 위치에 ". 페인트"하지 않습니다.

프로젝트 용 2D 게임을 만들려고하고 있습니다. 현재 이미지 대신 JTextArea를 사용하여 화면에 텍스트를 넣으려고합니다.

다음과 같이 JTextArea에 구성을위한 내 코드는 다음과 같습니다

Insets margin = new Insets(10,30,0,0); //bottom, left, top, right 

    textArea = new JTextArea(); 
    textArea.setSize(textWidth, textHeight); 
    textArea.setLineWrap(true); 
    textArea.setWrapStyleWord(true); 
    textArea.setMargin(margin); 
    textArea.setFont(halFont); 
    textArea.setForeground(Color.YELLOW); 
    textArea.setBackground(new Color(0,0,0,0)); 
    textArea.setLocation(0, 600); 

내 문제는 내가 사용하여 화면에 "페인트"할 때이다 : 그것은 단지 그러나 그것을 위치 0,0에 페인트 textArea.paint(g); 색상, 인세 트, 글꼴 등을 포함한 나머지 textArea 서식을 유지합니다.

도장 후 을 실행하면 명확하게 0,0인데도 위치가 0,600이라고 주장합니다.

x 및 y 위치 값을 변경하려고했지만 텍스트가 여전히 화면 0,0에 남아 있습니다. 이 때문에 나는 그것이 .setLocation 호출보다는 .paint 호출과 관련이 있다는 것을 확신합니다.

형식 관리자를 사용해야한다는 것을 알고 있습니다. 그러나 .paint을 사용하고 있기 때문에 도움이되지 않을 것입니다.

Q : .paint 호출을 사용하고 화면에 그려지는 텍스트의 위치를 ​​어떻게 바꿀 수 있습니까?

시간 내 주셔서 감사합니다.

+1

나는 그림이 자바에서 어떻게 작동하는지 이해하지 못한다. textArea.paint (g)를 절대 호출하면 안됩니다. 직접적으로 (g가 Image의 그래픽 객체가 아니라면) 대신 textArea.repaint()를 호출해야합니다. – ControlAltDel

+0

textArea.repaint()는 정확히 무엇을합니까 (미안 XD). 지금까지 g.paint로 모든 작업을 완료했으며 완벽하게 작동합니다. .repaint를 단독으로 사용하려고하면 텍스트가 더 이상 나타나지 않으므로 사용해야 할 때 혼란 스럽습니다. – danielcwr

+0

끔찍한 프로그래밍의 힘을 사용하여 텍스트를 원하는 위치에 넣을 수있었습니다. JTextArea의 높이가 화면의 높이보다 크다면, .setLocation 대신에 insets를 사용했습니다 : 3 – danielcwr

답변

0

레이아웃 관리자를 사용하는 경우 레이아웃 관리자 자체는 setLocationsetSize을 호출하는 것이므로 어떤 시도를해도 덮어 씁니다. 레이아웃 관리자를 사용하여 구성 요소가 있어야한다고 생각하는 위치에 배치 할 수 있어야합니다. 당신은 그 위치에 영향을 미친다.

1) what layoutmanager you choose 
2) your use of setPreferredSize(Dimension d), setMinimumSize(Dimension d), setMaximumSize(Dimension d) 
+0

오케이, 나는 이것을 시도 할 것이다. 빠른 답변 감사합니다. – danielcwr

관련 문제