我有JComboBox
,里面有2列。我从ArrayList
的数据库中获取数据。并在JComboBox
中使用循环:
for(int x = 0; x < result.size(); x++)
combo.addItem(new String[]{
(String) result.get(x),""+(String) result2.get(x)});
这是我的自定义渲染器:
class MyRenderer extends JPanel implements ListCellRenderer<Object> {
private static final long serialVersionUID = 236185631594254585L;
JLabel[] lbl = new JLabel[2];
public MyRenderer () {
setLayout(new GridLayout(0,2));
for(int x = 0; x < lbl.length; x++){
lbl[x] = new JLabel();
lbl[x].setOpaque(true);
add(lbl[x]);
}
}
public Component getListCellRendererComponent (JList<?> list,Object value,
int index,boolean isSelected,boolean cellHasFocus) {
for(int x = 0; x < lbl.length; x++)
lbl[x].setText((String)((String[])value)[x]);
return this;
}
}
可运行的代码:
public class MultipleComboTest extends JFrame {
JComboBox<String[]> combo = new JComboBox<String[]>();
ArrayList result;
ArrayList result2;
public TestingMultipleCombo(){
setLocation(400,300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
combo.setRenderer(new MyRenderer());
getContentPane().add(combo);
result = new ArrayList();
result2 = new ArrayList();
result.add("Test1");
result.add("Test2");
result2.add("Value1");
result2.add("Value2");
for(int x = 0; x < result.size();x++) combo.addItem(new String [] {(String) result.get(x),""+(String) result2.get(x)});
pack();
combo.setEditable(true);
}
public static void main(String[] args){new TestingMultipleCombo().setVisible(true);}
}
class MyRenderer extends JPanel implements ListCellRenderer<Object> {
private static final long serialVersionUID = 236185631594254585L;
JLabel[] lbl = new JLabel[2];
public MyRenderer(){
setLayout(new GridLayout(0,2));
for(int x = 0; x < lbl.length; x++){
lbl[x] = new JLabel();
lbl[x].setOpaque(true);
add(lbl[x]);
}
}
public Component getListCellRendererComponent(JList<?> list,Object value,
int index,boolean isSelected,boolean cellHasFocus){
for(int x = 0; x < lbl.length; x++){
lbl[x].setText((String)((String[])value)[x]);
}
return this;
}
}
在设置JComboBox
可编辑之前,一切正常。它显示:
[Ljava.lang.String; @ c7dc2d”
我想只显示2列的1个值。 有谁知道我怎么能这样做?