我有一个JComboBox
,其渲染器为JLabel
,其中Icon
为组合列表中的每个项目:
class ComboBoxRenderer extends JLabel implements ListCellRenderer {
public Component getListCellRendererComponent(
JList list,
Object comboItemObject,
int comboItemIndex,
boolean isSelected,
boolean cellHasFocus) {
String comboItemTitle = (String)comboItemObject;
setText( comboItemTitle );
setIcon( new ImageIcon( getClass().getResource( "/images/myIcon.png" ) ) );
return this;
}
}
当我从comboBox中选择一个项目时,我只想在comboBox中显示所选项目文本,而不是项目图标。 我有办法吗?
答案 0 :(得分:3)
在渲染代码中,您可以检查索引。类似的东西:
if (index == -1)
{
setText(...);
}
else
{
setText(...);
setIcon(...);
}
此外,您不应该在渲染代码中读取图像,因为代码经常被调用。
答案 1 :(得分:1)
然后你必须覆盖isSelected
,extends JLabel
没用,因为渲染器默认返回JLabel
作为组件
答案 2 :(得分:0)
要获取combobox;
中的文字,您只需要一个代码。
创建一个变量,我称之为Combotext
然后从SelectedItem
获取JComboBox
。
ComboText = jComboBox.getSelectedItem();