2012-04-03 6 views
2

내 Java 응용 프로그램에 특정 모양을 그리는 JPanel이 들어 있습니다. 이제 저는 이러한 모양에 일종의 툴팁을 붙이고 싶습니다. 자신의 도면에 대한 도구 설명

따라서 나는하면서 drawString을 사용하여 내 자신의 "도구 설명"을 만들려고, setBackground의, setColor를 방법 :

public void drawToolTip(Graphics2D graphics, String text, Point2D position) { 
    graphics.setBackground(Color.RED); 
    graphics.setColor(Color.GREEN); 
    graphics.drawString(text, (float) position.getX(), (float) position.getY()); 
} 

는 불행하게도 setBackground의 방법은 작동하지 않습니다. 텍스트 배경은 빨간색으로 설정되어 있지만 투명하게 유지됩니다. setColor 및 drawString이 제대로 작동합니다.

내 질문은 :

  • 가 무엇 setBackground의 방법이 작동하지 않는 이유가 될 수 있을까?
  • drawRect없이 경계선을 그릴 가능성이 있습니까?
  • 텍스트 배경과 테두리를 그릴 때 substraw로 "drawRect"메서드를 사용하려면 어떻게해야합니까? 필기 텍스트에 자동으로 맞게 만들려면 어떻게해야합니까? 또는 다른 말로하면 특정 텍스트의 크기를 어떻게 얻을 수 있습니까?

감사합니다 마크는

+0

그런데 Graphics2D 객체를 어떻게 얻고 있습니까? BufferedImage에서 가져 왔습니까? 구성 요소에서'getGraphics()'또는'createGraphics()'를 호출하고 있습니까? –

+0

JPanel의 페인트 메서드에서 수행 할 작업은 다음과 같습니다. Graphics2D graphics2d = (Graphics2D) graphics; 및 drawToolTip 메서드를 호출하십시오. – Marc

답변

4
  • Graphics2D.drawString() 기본적으로 배경을 그리지 않습니다. 당신 스스로 이것을해야 할 것입니다.

  • drawRect()을 사용하여 선 테두리를 그리거나 fillRec()을 사용하여 단색 사각형을 그릴 수 있습니다.

  • 오라클은 문자열 폭 측정시 큰 tutorial입니다. 기본적으로 java.awt.Font을 만들고 FontMetrics을 얻어이를 사용하여 문자열의 너비와 높이를 계산해야합니다.

+0

또한'Graphics2D.setFont()'를 호출하여'FontMetrics'와 동일한 글꼴로'String'을 실제로 그려야합니다. – ulmangt

3

간단한 구현은 JLabel의 아이콘의 Graphics 객체에 그리기 포함한다. Swing 구성 요소에 도구 설명 텍스트를 추가하기 만하면됩니다.

자세한 내용은 How to Use Tool Tips을 참조하십시오.

3

graphics.setBackground(..) 전화를 사용하여 배경색을 변경할 수 없습니다. Graphics2D의 백그라운드 칼라의 설정은, clearRect 또는 fillRect의 종류의 호출에 영향을 주는지, Component의 백그라운드 칼라에는 영향을주지 않습니다. 배경 r

  • grpahics.setPaint()
  • graphics.fill(r) -

    1. 이 사각형을 정의합니다

      는 특정 다시 땅으로, 원하는 위치에 사각형을 그리기를 들어, 다음 단계에 릴레이해야합니다 국경을위한 graphcis.setPaint()

    2. 국경을 그리기

    이제 높이 계산 등이 포함 된 사각형에 텍스트를 그리는 데 어려운 부분이 있습니다.텍스트를 그리기 위해 설정할 글꼴의 FontMetrics을 기반으로합니다. 내가 검색해 당신을위한 예제를 찾았습니다. here