diff options
author | Audrius Meskauskas <audriusa@Bioinformatics.org> | 2006-05-23 18:10:32 +0000 |
---|---|---|
committer | Audrius Meskauskas <audriusa@Bioinformatics.org> | 2006-05-23 18:10:32 +0000 |
commit | a38c13ea52214b5451d2e0f7240fcaa91549021a (patch) | |
tree | 90841001545b8d918a90c68968269199d5c57ab0 /examples | |
parent | 6e0350b885be8e94266b4aa99e34a2a1b65316eb (diff) | |
download | classpath-a38c13ea52214b5451d2e0f7240fcaa91549021a.tar.gz |
2006-05-23 Audrius Meskauskas <AudriusA@Bioinformatics.org>
* examples/gnu/classpath/examples/swing/TableDemo.java:
(SliderCell): New inner class. (setCustomEditors,
setInformativeHeaders): New fields. (createContent):
Rewritten.
* javax/swing/DefaultCellEditor.java
(JComboBoxDelegate.shouldSelectCell): New method.
* javax/swing/JTable.java (editCellAt): Call shouldSelectCell.
* javax/swing/plaf/basic/BasicTableUI.java
(MouseInputHandler.mouseClicked): Start editing on a single
click if the cell editor is not a default cell editor.
Diffstat (limited to 'examples')
-rw-r--r-- | examples/gnu/classpath/examples/swing/TableDemo.java | 146 |
1 files changed, 141 insertions, 5 deletions
diff --git a/examples/gnu/classpath/examples/swing/TableDemo.java b/examples/gnu/classpath/examples/swing/TableDemo.java index e661ee3ad..0f72e3125 100644 --- a/examples/gnu/classpath/examples/swing/TableDemo.java +++ b/examples/gnu/classpath/examples/swing/TableDemo.java @@ -39,19 +39,34 @@ exception statement from your version. */ package gnu.classpath.examples.swing; import java.awt.BorderLayout; +import java.awt.Component; import java.awt.Dimension; +import java.awt.Rectangle; +import java.text.DateFormat; +import java.util.Date; +import javax.swing.AbstractCellEditor; +import javax.swing.BorderFactory; +import javax.swing.DefaultCellEditor; import javax.swing.Icon; +import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; +import javax.swing.JScrollBar; import javax.swing.JScrollPane; +import javax.swing.JSlider; import javax.swing.JTable; +import javax.swing.JTextField; import javax.swing.SwingUtilities; +import javax.swing.border.Border; import javax.swing.plaf.metal.MetalIconFactory; import javax.swing.table.DefaultTableColumnModel; import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; +import javax.swing.table.TableColumnModel; /** * Displays the editable table. The first column consists of check boxes. @@ -144,6 +159,77 @@ public class TableDemo extends JPanel } /** + * The scroll bar renderer. + */ + class SliderCell + extends AbstractCellEditor + implements TableCellEditor, TableCellRenderer + { + /** + * The editor bar. + */ + JSlider bar; + + /** + * The renderer bar. + */ + JSlider rendererBar; + + /** + * The border around the bar, if required. + */ + Border border = BorderFactory.createLineBorder(table.getGridColor()); + + SliderCell() + { + bar = new JSlider(); + bar.setOrientation(JScrollBar.HORIZONTAL); + bar.setMinimum(0); + bar.setMaximum(rows); + bar.setBorder(border); + + rendererBar = new JSlider(); + rendererBar.setMinimum(0); + rendererBar.setMaximum(rows); + rendererBar.setEnabled(false); + } + + /** + * Get the editor. + */ + public Component getTableCellEditorComponent(JTable table, Object value, + boolean isSelected, int row, + int column) + { + if (value instanceof Integer) + bar.setValue(((Integer) value).intValue()); + return bar; + } + + /** + * Get the renderer. + */ + public Component getTableCellRendererComponent(JTable table, Object value, + boolean isSelected, + boolean hasFocus, int row, + int column) + { + rendererBar.setValue(((Integer) value).intValue()); + if (hasFocus) + rendererBar.setBorder(border); + else + rendererBar.setBorder(null); + return rendererBar; + } + + public Object getCellEditorValue() + { + return new Integer(bar.getValue()); + } + + } + + /** * The table being displayed. */ JTable table = new JTable(); @@ -184,23 +270,32 @@ public class TableDemo extends JPanel MetalIconFactory.getTreeComputerIcon(), MetalIconFactory.getTreeHardDriveIcon(), MetalIconFactory.getTreeFolderIcon(), - }; + }; + + String [] sides = new String[] + { + "north", "south", "east", "west" + }; for (int i = 0; i < values.length; i++) { values[i] = new Object[cols]; - for (int j = 2; j < cols; j++) + for (int j = 3; j < cols; j++) { values[i][j] = "" + ((char) ('a' + j)) + i; } values [i][0] = i % 2 == 0? Boolean.TRUE : Boolean.FALSE; - values [i][1] = icons [ i % icons.length ]; + values [i][1] = icons [ i % icons.length ]; + values [i][2] = sides [ i % sides.length ]; + values [i][4] = new Integer(i); } table.setModel(model); // Make the columns with gradually increasing width: DefaultTableColumnModel cm = new DefaultTableColumnModel(); + table.setColumnModel(cm); + for (int i = 0; i < cols; i++) { TableColumn column = new TableColumn(i); @@ -215,8 +310,9 @@ public class TableDemo extends JPanel cm.addColumn(column); } - - table.setColumnModel(cm); + + setCustomEditors(sides); + setInformativeHeaders(); // Create the table, place it into scroll pane and place // the pane into this frame. @@ -229,6 +325,45 @@ public class TableDemo extends JPanel } /** + * Set the more informative column headers for specific columns. + */ + void setInformativeHeaders() + { + TableColumnModel cm = table.getColumnModel(); + + cm.getColumn(0).setHeaderValue("check"); + cm.getColumn(1).setHeaderValue("icon"); + cm.getColumn(2).setHeaderValue("combo"); + cm.getColumn(3).setHeaderValue("edit combo"); + cm.getColumn(4).setHeaderValue("slider"); + } + + /** + * Set the custom editors for combo boxes. This method also sets one + * custom renderer. + * + * @param sides the array of the possible choices for the combo boxes. + */ + void setCustomEditors(String[] sides) + { + TableColumnModel cm = table.getColumnModel(); + // Set the simple combo box editor for the third column: + JComboBox combo1 = new JComboBox(sides); + cm.getColumn(2).setCellEditor(new DefaultCellEditor(combo1)); + + // Set the editable combo box for the forth column: + JComboBox combo2 = new JComboBox(sides); + combo2.setEditable(true); + cm.getColumn(3).setCellEditor(new DefaultCellEditor(combo2)); + + SliderCell scrollView = new SliderCell(); + cm.getColumn(4).setCellEditor(scrollView); + cm.getColumn(4).setCellRenderer(scrollView); + + table.setColumnModel(cm); + } + + /** * The executable method to display the editable table. * * @param args @@ -266,3 +401,4 @@ public class TableDemo extends JPanel }; } } + |