| | |
How can i make perticular row or perticular cell of a JTable as Editable dynamically
Please support our Java advertiser: Programming Forums - DaniWeb Sister Site
![]() |
•
•
Join Date: Jun 2006
Posts: 3
Reputation:
Solved Threads: 0
How can i make perticular row or perticular cell of a JTable as Editable dynamically
0
#1 Jan 16th, 2007
Dear all,
i am having a JTable, in which a column of each row is having a checkbox field.
If the checkbox is checked then and then i should be able to modify the cells in that row, ...where the checkbox is.
I have created the table with AbstractTableModel of which the isCellEditable(int row, int col) method is overridden.
Whatever return value (true/false) gives, it reflects the perticular
cells becomes editable/non-editable respectively.
but at run time...(mean the table is created now) and now i want to make the cells editable/non-editable depending on the checkbox value...
how can i implement it.........
please suggest.........
thank you.........
following is the sample code from some tutorial...
i am having a JTable, in which a column of each row is having a checkbox field.
If the checkbox is checked then and then i should be able to modify the cells in that row, ...where the checkbox is.
I have created the table with AbstractTableModel of which the isCellEditable(int row, int col) method is overridden.
Whatever return value (true/false) gives, it reflects the perticular
cells becomes editable/non-editable respectively.
but at run time...(mean the table is created now) and now i want to make the cells editable/non-editable depending on the checkbox value...
how can i implement it.........
please suggest.........
thank you.........
following is the sample code from some tutorial...
Java Syntax (Toggle Plain Text)
/* * TableRenderDemo.java requires no other files. */ import java.awt.Component; import java.awt.Dimension; import java.awt.GridLayout; import javax.swing.DefaultCellEditor; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; /** * TableRenderDemo is just like TableDemo, except that it explicitly initializes * column sizes and it uses a combo box as an editor for the Sport column. */ @SuppressWarnings("serial") public class TableRenderDemo extends JPanel { private boolean DEBUG = true; public TableRenderDemo() { super(new GridLayout(1, 0)); JTable table = new JTable(new MyTableModel()); // table.setEditingColumn(0); // table.editCellAt(0, 0); table.setPreferredScrollableViewportSize(new Dimension(500, 100)); // Create the scroll pane and add the table to it. JScrollPane scrollPane = new JScrollPane(table); // Set up column sizes. initColumnSizes(table); // Fiddle with the Sport column's cell editors/renderers. setUpSportColumn(table, table.getColumnModel().getColumn(2)); // Add the scroll pane to this panel. add(scrollPane); } /* * This method picks good column sizes. If all column heads are wider than * the column's cells' contents, then you can just use * column.sizeWidthToFit(). */ private void initColumnSizes(JTable table) { MyTableModel model = (MyTableModel) table.getModel(); TableColumn column = null; Component comp = null; int headerWidth = 0; int cellWidth = 0; Object[] longValues = model.longValues; TableCellRenderer headerRenderer = table.getTableHeader() .getDefaultRenderer(); for (int i = 0; i < 5; i++) { column = table.getColumnModel().getColumn(i); comp = headerRenderer.getTableCellRendererComponent(null, column .getHeaderValue(), false, false, 0, 0); headerWidth = comp.getPreferredSize().width; comp = table.getDefaultRenderer(model.getColumnClass(i)) .getTableCellRendererComponent(table, longValues[i], false, false, 0, i); cellWidth = comp.getPreferredSize().width; if (DEBUG) { System.out.println("Initializing width of column " + i + ". " + "headerWidth = " + headerWidth + "; cellWidth = " + cellWidth); } // XXX: Before Swing 1.1 Beta 2, use setMinWidth instead. column.setPreferredWidth(Math.max(headerWidth, cellWidth)); } } public void setUpSportColumn(JTable table, TableColumn sportColumn) { // Set up the editor for the sport cells. JComboBox comboBox = new JComboBox(); comboBox.addItem("Snowboarding"); comboBox.addItem("Rowing"); comboBox.addItem("Knitting"); comboBox.addItem("Speed reading"); comboBox.addItem("Pool"); comboBox.addItem("None of the above"); sportColumn.setCellEditor(new DefaultCellEditor(comboBox)); // Set up tool tips for the sport cells. DefaultTableCellRenderer renderer = new DefaultTableCellRenderer(); renderer.setToolTipText("Click for combo box"); sportColumn.setCellRenderer(renderer); } class MyTableModel extends AbstractTableModel { private String[] columnNames = { "First Name", "Last Name", "Sport", "# of Years", "Vegetarian" }; private Object[][] data = { { "Mary", "Campione", "Snowboarding", new Integer(5), new Boolean(false) }, { "Alison", "Huml", "Rowing", new Integer(3), new Boolean(true) }, { "Kathy", "Walrath", "Knitting", new Integer(2), new Boolean(false) }, { "Sharon", "Zakhour", "Speed reading", new Integer(20), new Boolean(true) }, { "Philip", "Milne", "Pool", new Integer(10), new Boolean(false) } }; public final Object[] longValues = { "Sharon", "Campione", "None of the above", new Integer(20), Boolean.TRUE }; public int getColumnCount() { return columnNames.length; } public int getRowCount() { return data.length; } public String getColumnName(int col) { return columnNames[col]; } public Object getValueAt(int row, int col) { return data[row][col]; } /* * JTable uses this method to determine the default renderer/ editor for * each cell. If we didn't implement this method, then the last column * would contain text ("true"/"false"), rather than a check box. */ public Class<?> getColumnClass(int c) { return getValueAt(0, c).getClass(); } /* * Don't need to implement this method unless your table's editable. */ public boolean isCellEditable(int row, int col) { // Note that the data/cell address is constant, // no matter where the cell appears onscreen. // return false; return true; } /* * Don't need to implement this method unless your table's data can * change. */ public void setValueAt(Object value, int row, int col) { if (DEBUG) { System.out.println("Setting value at " + row + "," + col + " to " + value + " (an instance of " + value.getClass() + ")"); } data[row][col] = value; fireTableCellUpdated(row, col); if (DEBUG) { System.out.println("New value of data:"); printDebugData(); } } private void printDebugData() { int numRows = getRowCount(); int numCols = getColumnCount(); for (int i = 0; i < numRows; i++) { System.out.print(" row " + i + ":"); for (int j = 0; j < numCols; j++) { System.out.print(" " + data[i][j]); } System.out.println(); } System.out.println("--------------------------"); } } /** * Create the GUI and show it. For thread safety, this method should be * invoked from the event-dispatching thread. */ private static void createAndShowGUI() { // Create and set up the window. JFrame frame = new JFrame("TableRenderDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Create and set up the content pane. TableRenderDemo newContentPane = new TableRenderDemo(); newContentPane.setOpaque(true); // content panes must be opaque frame.setContentPane(newContentPane); // Display the window. frame.pack(); frame.setVisible(true); } public static void main(String[] args) { // Schedule a job for the event-dispatching thread: // creating and showing this application's GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }
Re: How can i make perticular row or perticular cell of a JTable as Editable dynamically
0
#2 Jan 16th, 2007
Use actionListener on checkbox to see if any changes happends, if yes than change status from non-editable to editable and oposite
Learn to see in another's calamity the ills which you should avoid.
Publilius Syrus
(~100 BC)
LJC - London Java Community, Graduate & Undergraduate Software Development Community, JAVAWUG (Java Web User Group), The London Android Group
Publilius Syrus
(~100 BC)
LJC - London Java Community, Graduate & Undergraduate Software Development Community, JAVAWUG (Java Web User Group), The London Android Group
•
•
Join Date: Jun 2006
Posts: 3
Reputation:
Solved Threads: 0
Re: How can i make perticular row or perticular cell of a JTable as Editable dynamica
0
#3 Jan 16th, 2007
thank you for reply.........
means r u saying that..... i should change some property of table on the event of any action performed......??
that is okay.... on that event what property should i change....???
thanks for spending your precious time....
plz reply...
means r u saying that..... i should change some property of table on the event of any action performed......??
that is okay.... on that event what property should i change....???
thanks for spending your precious time....
plz reply...
![]() |
Similar Threads
- Projects for the Beginner (Python)
- add onclick event programmatically (JavaScript / DHTML / AJAX)
- FlexGrid issue and error "Invalid Row value".... (Visual Basic 4 / 5 / 6)
- Tkinter Spreadsheet (Python)
- Burned by mutability (Python)
- JTable Limitation or Not? (Java)
Other Threads in the Java Forum
- Previous Thread: Accessing the Serial Port
- Next Thread: Printing Method
Views: 6985 | Replies: 2
| Thread Tools | Search this Thread |
Tag cloud for Java
android api apple applet application arguments array arrays automation bidirectional binary birt bluetooth calculator chat class classes client code columns component database designadrawingapplicationusingjavajslider detection draw eclipse editor error errors event exception expand file fractal game givemetehcodez graphics gui guidancer helpwithhomework html ide image inetaddress input integer intellij j2me java javamicroeditionuseofmotionsensor javaprojects jme jmf jni jpanel julia linux list loop map method methods mobile mobiledevelopmentcreatejar myaggfun netbeans newbie number object oracle os plazmic print problem program programming project recursion scanner screen server set signing size smart sms smsspam socket sort sql string subclass support swing test threads time transfer tree windows






