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
호출을 사용하고 화면에 그려지는 텍스트의 위치를 어떻게 바꿀 수 있습니까?
시간 내 주셔서 감사합니다.
나는 그림이 자바에서 어떻게 작동하는지 이해하지 못한다. textArea.paint (g)를 절대 호출하면 안됩니다. 직접적으로 (g가 Image의 그래픽 객체가 아니라면) 대신 textArea.repaint()를 호출해야합니다. – ControlAltDel
textArea.repaint()는 정확히 무엇을합니까 (미안 XD). 지금까지 g.paint로 모든 작업을 완료했으며 완벽하게 작동합니다. .repaint를 단독으로 사용하려고하면 텍스트가 더 이상 나타나지 않으므로 사용해야 할 때 혼란 스럽습니다. – danielcwr
끔찍한 프로그래밍의 힘을 사용하여 텍스트를 원하는 위치에 넣을 수있었습니다. JTextArea의 높이가 화면의 높이보다 크다면, .setLocation 대신에 insets를 사용했습니다 : 3 – danielcwr