domingo, 16 de septiembre de 2012

Agregar JComboBox dentro de un JTable DOS FORMAS en java



Apeticion de un Usuario de Facebook, les como agregar un JComboBox dentro de un JTable,para esto hay varias formas una mas compleja que otras peroaquíles explicare dos formas bastantes simples yfácilesde entender

Primera Forma
la primera imagen que les muestro es la primera formaaquíobservara el usuario una celda comun y corriente pero al hacer clic dentro de esta celda se desplegara el JComboBox y nos mostrara sus Item el cual pueden ser seleccionados y mostrarlos en la celda.
¿Como hacemos esto?
Todo sabemos que al construir una tabla debemos de colocar su modelo o elDefaultTableModel,una vez hecho esto creo unmétodoque me retornara un JComboBox el cual tiene item ya agregados.
private JComboBox CreameCombo() {
JComboBox combo = new JComboBox(new String[] {"Hector", "Maria Julia", "Daniel","Salomon","Pancrasia","Prudencia","Martin","Daniela","Mario"}) {
public void updateUI() {
super.updateUI();
setBorder(BorderFactory.createEmptyBorder());
setUI(new BasicComboBoxUI() {
@Override protected JButton createArrowButton() {
JButton button = super.createArrowButton();
button.setContentAreaFilled(false);
button.setBorder(BorderFactory.createEmptyBorder());
return button;
}
});
//
//
}
};
return combo;
}

ya construido nuestro combo lo agregamos ala Tabla de esta manera
JComboBox combo = CreameCombo();//CREO EL COMBO
TableColumn col = Table_forma_1.getColumnModel().getColumn(0);
col.setMinWidth(60);
col.setMaxWidth(60);
col.setResizable(false);
col = Table_forma_1.getColumnModel().getColumn(1);
col.setCellEditor(new DefaultCellEditor(combo));//AGREGO EL COMBO AL CELLEDITOR
Table_forma_1.setAutoCreateRowSorter(true);

La propiedadsetCellEditor() le agregamos la claseDefaultCellEditor() esta clase sera la que nos reciva nuestro ComBox,en pocas palabras lo que hace es insertar el combo y obtener el item seleccionado.

Segunda Forma
Básicamentees igual que la primera forma pero,aqui le hacemos saber al usuario que la celda contiene un JComboBox,podránobservar en la segunda imagen que se aprecia un icono dedespliegue, para esto hacemos lo mismo que en la forma uno peroaquíes donde utilizamos lasetCellRenderer esta nos recibe una clase llamadaComboCellRenderer , que es una clase JComboBox.

DESCARGAR







2 comentarios:

  1. Saludos
    Tengo un jframe donde tengo varios jtable lo que quiero es que cuando se llene las celdas solo permita numeros , los valores por defecto de estos es 0 , cuando presione tab, pase a la otra celda que seleccione para al momento de escribir se borre el cero, y si hay un campo vacio este se vuelve en cero, he intentado con la interfaz keylistener pero no me ha resultado..... espero me ayuden

    ResponderEliminar
    Respuestas
    1. Que tal Bruno no te entiendo muy bien lo que quieres hacer,pero algo te eh comprendido si deseas validar las celdas debes de usar un metodo que comprueb si son numeros o letras.


      public boolean esCifra(String text){
      char caracter = text.charAt(0);
      if(((caracter < '0') || (caracter > '9')) && caracter!=KeyEvent.VK_BACK_SPACE){
      return false;
      }
      else
      return true;

      }



      no puedes usar keyTyped por que asta donde te endiendo no estas tipiando datos si no cargando

      Eliminar