Hace poco vimos como cargar datos desde
Mysql a un JComboBoxhoy les enseño como añadir mas de un item al JComboBox es bastante útil cuando es necesario mostrar mas de un item ,por defecto el JComboBox no permite esto asta donde yo se , asi que podemos modificarlo para añadir otra columna pero antes de alterar sus estructura lo cual sera un poco mas difícil vamos por otro camino como muy pocos sabrán se pude fusionar
HTML y Java ,asi que me baso en una
Tabla HTML para lograr lo que necesito, este Componente es uno que hacen fila de la libreria que cree ase tiempo y que nunca puede terminar asi que prefiero compartir pedazos de códigos a que queden en mi disco duro.
Pero como añado una Tabla HTML a un componente de Java?se puede añadir HTML a varios componente de java y este poder adaptarlo correctamente sin problemas y no es todo puedo darle estilos a la tabla por medio de CSS , asi que sabiendo eso creo un documento simple HTML dentro de una variable STRING.
str = "html" + "style type=text/css"+ ".estilo1{font-family:"+getFontFirstColumn().getFamily()+"; "+"font-weight:"+fuente(getFontFirstColumn().getStyle())+";"+"font-size:"+getFontFirstColumn().getSize()+"px;"+"color:rgb("+getColorFirstColumn().getRed()+","+getColorFirstColumn().getGreen()+","+getColorFirstColumn().getBlue()+");"+"}"+ ".estilo2{font-family:"+getFontSecondColumn().getFamily()+"; "+"font-weight:"+fuente(getFontSecondColumn().getStyle())+";"+"font-size:"+ getFontSecondColumn().getSize()+"px;"+"color:rgb("+getColorSecondColumn().getRed()+","+getColorSecondColumn().getGreen()+","+getColorSecondColumn().getBlue()+");"+"}"+ "/style"+ "table width='"+ancho+"'"+"" + "tr" + "td class=estilo1 align='left'" + leftText; str = str + "/tdtd class=estilo2 align='right'" + rightText + "/td/tr/table/html";
dentro de esta variable String creo una cadena con las etiquetasHTML y las clases CSS para formar una sola cadena que me recibe valores que serán los items de cada columna y los valores que alteran la tabla para darle un estilo,tipo de fuente,color de fuente todos esos toda esta codificación tendrá que estar dentro de una clase llamadaTableItem esta clase me recibe los valores de cada columna en Array String para luego retorna los items y ser añadidos al JComboBox.
private void addItemColum(String[] left, String right[]) { if(left.length 1 && right.length1) { for(int i=0; ileft.length; i++) { this.addItem(new TableItem(this,left[i], right[i])); } } }
por medio del métodoaddItemColum(L,R) que esta en la clasejComboBoxBD puedo añadir items creado dos variables Array String manualmente .
String nombre[]={"Pedro","Pablo","Maria","Eudalia"}; String años[]={"22","20","15","18"}; combo_box_union.addItemColum(nombre, años);
de esta forma podemos añadir items a cada columna,pero manual mente.
Pero si quiero cargar datos desde Mysql?para ello necesito utilizar
ArrayListString con el ArrayList podremos almacenar los valores que retorna la consulta SQL cabe recalcar que aquí necesitamos utilizar dos campos de la tabla ya que son dos columnas en el JComboBox , luego que que los ArrayList este cargados le pasamos el valor a dos variables Arrary String ,estas dos varibles seran los valores que recibirá el método
addItemColum(String[] left, String right[]) , para luego ser añadidos al JComoBox por medio de addItem();
public void setInjectSQLDobleColumn(String sql,String campo1,String campo2){ try{ ResultSet rs; rs=ConexionBD.Consulta(sql); ArrayListString col1 = new ArrayListString(); ArrayListString col2 = new ArrayListString(); while (rs.next()) { col1.add(rs.getString(campo1)); col2.add(rs.getString(campo2)); } String [] itemCol_1 = new String [col1.size()]; String [] itemCol_2 = new String [col2.size()]; col1.toArray(itemCol_1); col2.toArray(itemCol_2); addItemColum(itemCol_1, itemCol_2); } catch(Exception ex){ System.out.println("ERROR EN AL CARGAR DATOS"); } }
Como retorna los dos valores del Item selecionado ?para eso necesito recrear dos métodos que reciban y retornen los datos dentro de estos dos metodos estara instanciada la clase
TableItem y el valor que recibira los métodos seran de tipo Object .
public String getLeftText(Object obj) { TableItem item = (TableItem)obj; return item.getLeftText(); } public String getRightText(Object obj) { TableItem item = (TableItem)obj; return item.getRightText(); }
utilizando los métodos dentro de un evento
actionPerformed.combo_box_union.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { txt_nombre.setText(combo_box_union.getLeftText(combo_box_union.getSelectedItem())); txt_curso.setText(combo_box_union.getRightText(combo_box_union.getSelectedItem())); } });
les dejo el codigo fuente completo mas la base de datos.
DESCARGAR
Contraseña: www.javaface-elblogdelprogramador.com
Contraseña a partir del 2012: javaface