Checkbox en Java

Embed Size (px)

DESCRIPTION

ARCHIVOS Y COMANDOS EN JAVA PARA ACCESO A BASE DE DATOS

Citation preview

Si deseas descargar el proyecto netbeans copia este link y pegalo en tu navegador, proyecto realizado en netbeans 7.4clic en saltar publicidad, y descarga el proyecto de poner JCheckBox dentro de un JTable en java netbeanshttp://sh.st/wGM7i-------------------------------------------------------------------------------------------------------------------------------Para colocar un JCheckBox dentro una celda de un JTable debemos sobre escribir algunas clases para que el componente pueda ser pintado en el JTable, si se desea colocar cualquier otro componente, el procedimiento es similar,teniendo cuidado claro, en los mtodos propios de cada componente swing.Lo primero que debe hacerse, es crear una nueva clase que se extienda de DefaultCellEditor e implementeTableCellRenderer, esto para indicarle al JTable que tipo de componente debe utilizar al momento de introducir la informacin.package JheysonMattatablecheckBox;import java.awt.Color;import java.awt.Component;import javax.swing.DefaultCellEditor;import javax.swing.JCheckBox;import javax.swing.JComponent;import javax.swing.JTable;import javax.swing.table.TableCellRenderer;/** * @www.facebook.com/groups/ProgramacionEnGeneral/ * @author Jheyson Matta */public class Celda_CheckBox extends DefaultCellEditor implements TableCellRenderer { private JComponent component = new JCheckBox(); private boolean value = false; // valor de la celda /** Constructor de clase */ public Celda_CheckBox() { super( new JCheckBox() ); } /** retorna valor de celda */ @Override public Object getCellEditorValue() { return ((JCheckBox)component).isSelected(); } /** Segun el valor de la celda selecciona/deseleciona el JCheckBox */ @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { //Color de fondo en modo edicion ( (JCheckBox) component).setBackground( new Color(234,176,40) ); //obtiene valor de celda y coloca en el JCheckBox boolean b = ((Boolean) value).booleanValue(); ( (JCheckBox) component).setSelected( b ); return ( (JCheckBox) component); } /** cuando termina la manipulacion de la celda */ @Override public boolean stopCellEditing() { value = ((Boolean)getCellEditorValue()).booleanValue() ; ((JCheckBox)component).setSelected( value ); return super.stopCellEditing(); } /** retorna componente */ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (value == null) return null; return ( (JCheckBox) component ); }}-------------------------------------------------------------------------------------------------------------------------------package JheysonMattatablecheckBox;/** * @www.facebook.com/groups/ProgramacionEnGeneral/ * @author Jheyson Matta */public class Main { public static void main(String[] args) { new interfaz().setVisible(true); }}-------------------------------------------------------------------------------------------------------------------------------Para que el JTable pinte el componente, creamos otra clase, esta vez que se extienda de JCheckBox, el componente que queremos pintar e implemente TableCellRenderer, la clase es la siguiente.package JheysonMattatablecheckBox;import java.awt.Color;import java.awt.Component;import javax.swing.JCheckBox;import javax.swing.JComponent;import javax.swing.JTable;import javax.swing.table.TableCellRenderer;/** * @www.facebook.com/groups/ProgramacionEnGeneral/ * @author Jheyson Matta */public class Render_CheckBox extends JCheckBox implements TableCellRenderer { private JComponent component = new JCheckBox(); /** Constructor de clase */ public Render_CheckBox() { setOpaque(true); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { //Color de fondo de la celda ( (JCheckBox) component).setBackground( new Color(146,200,80) ); //obtiene valor boolean y coloca valor en el JCheckBox boolean b = ((Boolean) value).booleanValue(); ( (JCheckBox) component).setSelected( b ); return ( (JCheckBox) component); }}-------------------------------------------------------------------------------------------------------------------------------Resumiendo, para pintar un componente swing dentro una celda de una tabla JTable,debemos crear dos clases una para manipular los valores de la celda (Celda_CheckBox)con el propio componente y otra para pintar el componente.Para implementar estas clases en el JTable, debemos indicarle que columna es la quecontendr el componente swing en el modo edicin, de la siguiente manera:jTable1.getColumnModel().getColumn( 0 ).setCellEditor( new Celda_CheckBox() );y tambin indicar que columna pintara el JCheckBox en todo momento.jTable1.getColumnModel().getColumn( 0 ).setCellRenderer(new Render_CheckBox());Un ejemplo completo que se inicia en el constructor de una clase JFrame llamado interfazel cual tiene un JTable, ademas se hace uso de un TableModel para colocar algunos datos:package JheysonMattatablecheckBox;import javax.swing.table.DefaultTableModel;/** * @www.facebook.com/groups/ProgramacionEnGeneral/ * @author Jheyson Matta */public class interfaz extends javax.swing.JFrame { /** Creates new form interfaz */ public interfaz() { initComponents(); this.setTitle("Jheyson Matta - jTable con jCheckBox "); //se crea un TableModel con algunos datos y se asigna al JTable DefaultTableModel TableModel = new DefaultTableModel(); TableModel.setDataVector(new Object[][] { { true, "Jheyson Matta", "19", "Hombre" }, { false, "Alexis Cahua", "19", "Hombre" }, { false, "Juan Oncevalle", "49", "Hombre" }, { true, "Brenda Silvera", "19", "Mujer" }, { false, "Gabriel Ruiz", "15", "Hombre" }, { false, "Jos Hinostroza", "47", "Hombre" }, { false, "Ruth Neyra", "19", "Mujer" } }, new Object[] { "CheckBox", "Nombre", "Edad", "Sexo" }); jTable1.setModel(TableModel); //Se crea el JCheckBox en la columna indicada en getColumn, en este caso, la primera columna jTable1.getColumnModel().getColumn( 0 ).setCellEditor( new Celda_CheckBox() ); //para pintar la columna con el CheckBox en la tabla, en este caso, la primera columna jTable1.getColumnModel().getColumn( 0 ).setCellRenderer(new Render_CheckBox()); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane1.setViewportView(jTable1); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 559, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); pack(); }// /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new interfaz().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; // End of variables declaration }