40 |
|
|
41 |
import java.awt.Component; |
import java.awt.Component; |
42 |
import java.awt.Dimension; |
import java.awt.Dimension; |
43 |
|
import java.awt.FontMetrics; |
44 |
import java.io.Serializable; |
import java.io.Serializable; |
45 |
|
|
46 |
import javax.swing.JLabel; |
import javax.swing.JLabel; |
47 |
import javax.swing.JList; |
import javax.swing.JList; |
48 |
import javax.swing.ListCellRenderer; |
import javax.swing.ListCellRenderer; |
49 |
import javax.swing.SwingConstants; |
import javax.swing.SwingConstants; |
50 |
|
import javax.swing.SwingUtilities; |
51 |
import javax.swing.UIDefaults; |
import javax.swing.UIDefaults; |
52 |
import javax.swing.UIManager; |
import javax.swing.UIManager; |
53 |
import javax.swing.border.Border; |
import javax.swing.border.Border; |
102 |
boolean cellHasFocus) |
boolean cellHasFocus) |
103 |
{ |
{ |
104 |
String s = value.toString(); |
String s = value.toString(); |
105 |
setText(s); |
|
106 |
|
// String maybe larger than comboBox. |
107 |
|
FontMetrics fm = getToolkit().getFontMetrics(list.getFont()); |
108 |
|
int strWidth = SwingUtilities.computeStringWidth(fm, s); |
109 |
|
int cbWidth = getSize().width; |
110 |
|
if (cbWidth != 0 && strWidth > cbWidth) |
111 |
|
{ |
112 |
|
char[] str = s.toCharArray(); |
113 |
|
int currWidth = 0; |
114 |
|
int i = 0; |
115 |
|
String postStr = "... "; |
116 |
|
cbWidth -= SwingUtilities.computeStringWidth(fm, postStr); |
117 |
|
while (i < str.length && currWidth < cbWidth) |
118 |
|
{ |
119 |
|
++i; |
120 |
|
currWidth = SwingUtilities.computeStringWidth(fm, new String(str, 0, i)); |
121 |
|
} |
122 |
|
setText(new String(str, 0, i) + postStr); |
123 |
|
} |
124 |
|
else |
125 |
|
setText(s); |
126 |
|
|
127 |
setOpaque(true); |
setOpaque(true); |
128 |
|
|
129 |
UIDefaults defaults = UIManager.getLookAndFeelDefaults(); |
UIDefaults defaults = UIManager.getLookAndFeelDefaults(); |