2011-03-01 2 views

답변

1

아마도 도구 팁과 같은 기능을 수행하고있을 것입니다. 그렇다면 JLabel과 같은 ListCellRenderer 컴포넌트를 제공하고 JLabel의 툴팁을 설정하십시오.

E.G. 툴팁에서 HTML 렌더링을 사용하는 방법.

import javax.swing.*; 

class LabelWithHtmlTooltip { 

    public static void main(String[] args) { 
     Runnable r = new Runnable() { 
      public void run() { 
       String html = "<html><body>" + 
        "<h1>Header</h1>" + 
        "<img src='http://pscode.org/media/starzoom-thumb.gif' " + 
        "width='160' height='120'>"; 
       JLabel label = new JLabel("Point at me!"); 
       label.setToolTipText(html); 
       JOptionPane.showMessageDialog(null, label); 
      } 
     }; 
     SwingUtilities.invokeLater(r); 
    } 
} 
+0

@ 앤드류 : 대답을 자세히 설명해 주시겠습니까? –

+0

어느 부분이 구체적입니까? –

+0

@Andrew : \t JLabel의 툴팁을 설정하면 텍스트 만 표시됩니다. 하지만 마우스를 올리면 텍스트와 이미지가 나타납니다. –

1

내가 그것을 구현하려고 할 방법은 다음과 같습니다

당신의 JList에의 MouseListener와 모든 MouseMotionListener를 추가합니다. 마우스를 목록에 입력하면 특정 지연 (0.5 초)을 기다리는 스레드를 시작합니다. 마우스를 움직이거나 드래그하면 지연 대기가 다시 시작됩니다. 마우스가 JList를 종료하면 (자), thread를 취소합니다. 이러한 리스너를 사용하여 마우스 위치도 추적하십시오.

일단 지연이 이루어지면 (전체 지연에 대해 이동하지 않고 마우스가 목록에 머물러 있어야 함을 의미 함) SwingUtilities.invokeLater를 사용하여 정보 상자를 표시합니다. JList의 locationToIndex를 사용하여 마우스가 움직이는 행을 결정할 수 있습니다.