我有一個JList和JList的每個項目都有一個獨特的顯示文本和工具提示文本。我想爲JList使用'DefaultListModel'。我的問題是,將項目添加到DefaultListModel時,可以以某種方式保存工具提示文本。JList的工具提示文本在DafaultListModel
謝謝。
我有一個JList和JList的每個項目都有一個獨特的顯示文本和工具提示文本。我想爲JList使用'DefaultListModel'。我的問題是,將項目添加到DefaultListModel時,可以以某種方式保存工具提示文本。JList的工具提示文本在DafaultListModel
謝謝。
您可以覆蓋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瞭解使用此方法創建對象的示例。
我不想爲每個項目顯示與工具提示相同的文本。假設我想爲第一個iem展示「一個蘋果」,爲第二個項目展示「兩個香蕉」等等。我想將自定義文本保存在模型中。 –
@ Md.ShahriarMahbub,'我不想爲每個項目顯示相同的文本作爲提示 - 顯然,我只是告訴你如何使用該方法。 '而且我想將自定義文本保存在模型中 - 所以現在您需要修改邏輯以獲取添加到模型中的對象的文本。 – camickr
覆蓋類的toString()方法已經完成。 –
JList中的工具提示由單元格「ListCellRenderer」的工具提示定義。 –