ListCellRenderer自己写,想怎么显示都可以, 如 public class MyListCellRenderer extends JLabel implements ListCellRenderer, Serializable{ public MyListCellRenderer(){ }
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus){ /* *自己实现,想怎么显示自定义。 */ return this; } } 写完后, JComboBox box = new JComboBox(); box.setRender(new MyListCellRenderer()); ok!!
to Apocalypse(逍遥思辨) : 你说的方法应该可以,我在一个JPanel上放上两个JLabel作为ListCellRenderer,能够表示两列数据了。你认为这样做如何? 还有,因为选定以后,我只想显示第一列的数据,比如,在ComboBox的下拉List中选定了[021|上海]后,ComboBox中只显示[021]。 现在我构造用String[][]来构造MyComboBoxModel, class ComboTableModel extends DefaultComboBoxModel{ Object o = null;
public ComboTableModel(Object[] value){ super(value); } /** Set the selected item **/ public void setSelectedItem(Object anItem){ String[] values = (String[])anItem; o = values[0]; System.out.println(o); }
/** Return the selected item **/ public Object getSelectedItem(){ System.out.println("get:"+o); return o; } } 可是,选定后,ComboBox总是为空,为什么?选中之后可是现在
如
public class MyListCellRenderer extends JLabel
implements ListCellRenderer, Serializable{
public MyListCellRenderer(){ }
public Component getListCellRendererComponent(JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus){
/*
*自己实现,想怎么显示自定义。
*/
return this;
}
}
写完后,
JComboBox box = new JComboBox();
box.setRender(new MyListCellRenderer());
ok!!
你说的方法应该可以,我在一个JPanel上放上两个JLabel作为ListCellRenderer,能够表示两列数据了。你认为这样做如何?
还有,因为选定以后,我只想显示第一列的数据,比如,在ComboBox的下拉List中选定了[021|上海]后,ComboBox中只显示[021]。
现在我构造用String[][]来构造MyComboBoxModel,
class ComboTableModel extends DefaultComboBoxModel{
Object o = null;
public ComboTableModel(Object[] value){
super(value);
}
/** Set the selected item **/
public void setSelectedItem(Object anItem){
String[] values = (String[])anItem;
o = values[0];
System.out.println(o);
}
/** Return the selected item **/
public Object getSelectedItem(){
System.out.println("get:"+o);
return o;
}
}
可是,选定后,ComboBox总是为空,为什么?选中之后可是现在