2017-05-24 18 views
0

JList가 있으며 각 JList 항목에는 고유 한 표시 텍스트와 툴팁 텍스트가 있습니다. JList에 'DefaultListModel'을 사용하고 싶습니다. 내 질문은 어떻게 든 DefaultListModel 항목을 추가 할 때 도구 설명 텍스트를 저장할 수 있습니다.DafaultListModel의 툴팁 텍스트가있는 JList

감사합니다.

+0

JList의 툴팁은'ListCellRenderer' 셀의 툴팁으로 정의됩니다. –

답변

2

getToolTipText(...) 메서드를 재정 의하여 사용자 지정 도구 설명을 제공 할 수 있습니다. 예를 들어

:

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class ListToolTip extends JFrame 
{ 
    public ListToolTip() 
    { 
     DefaultListModel model = new DefaultListModel(); 
     model.addElement("one"); 
     model.addElement("two"); 
     model.addElement("three"); 
     model.addElement("four"); 
     model.addElement("five"); 
     model.addElement("six"); 
     model.addElement("seven"); 
     model.addElement("eight"); 
     model.addElement("nine"); 
     model.addElement("ten"); 

     JList list = new JList(model) 
     { 
      public String getToolTipText(MouseEvent e) 
      { 
       int row = locationToIndex(e.getPoint()); 
       Object o = getModel().getElementAt(row); 
       return o.toString(); 
      } 

      public Point getToolTipLocation(MouseEvent e) 
      { 
       int row = locationToIndex(e.getPoint()); 
       Rectangle r = getCellBounds(row, row); 
       return new Point(r.width, r.y); 
      } 
     }; 

     JScrollPane scrollPane = new JScrollPane(list); 
     getContentPane().add(scrollPane); 
    } 

    public static void main(String[] args) 
    { 
     ListToolTip frame = new ListToolTip(); 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     frame.setSize(400, 100); 
     frame.setVisible(true); 
    } 
} 

getToolTipLocation(...) 오버라이드가 필요하지 않다.

편집 :

내가 모델에 사용자 정의 텍스트를 저장할

다음

당신이 목록과에 표시되는 값이 포함 된 모델에서 사용자 지정 개체를 저장해야합니다 툴팁 텍스트.

이 방법을 사용하여 개체를 만드는 예는 ComboBox With Hidden Data을 확인하십시오.

+0

각 항목의 툴팁과 동일한 텍스트를 표시하고 싶지 않습니다. 첫번째 iem은 "One apple"을, 두 번째 항목은 "두 개의 바나나"를 보여주고 싶습니다. 그리고 모델에 맞춤 텍스트를 저장하고 싶습니다. –

+0

@ Md.ShahriarMahbub, '각 항목에 대한 툴팁으로 같은 텍스트를 보여주고 싶지 않습니다.'- 분명히, 나는 그 방법을 사용하는 방법을 보여 주려고했다. '그리고 사용자 정의 텍스트를 모델에 저장하고 싶습니다. '- 이제 모델에 추가 한 객체의 텍스트를 가져 오기 위해 로직을 수정해야합니다. – camickr

+0

클래스의 toString() 메서드를 재정 의하여 트릭을 완료했습니다. –