import java.awt.*; import java.awt.event.*; import java.util.Random; import java.util.Date; import java.text.*; import javax.swing.*; import javax.swing.text.AttributeSet; import javax.swing.text.SimpleAttributeSet; import javax.swing.text.StyleConstants; import com.zfqjava.swing.*; import com.zfqjava.swing.cell.*; import com.zfqjava.swing.model.DefaultColumnSorter; import javax.swing.table.TableCellRenderer; public class ColumnSorterDemo extends JDataGridBean { public ColumnSorterDemo() { super(); configure(); } private void configure() { final JDataGrid dataGrid = getDataGrid(); dataGrid.setModel(new DefaultColumnSorter(createModel())); dataGrid.putClientProperty("JDataGrid.columnSortingEnabled", Boolean.TRUE); dataGrid.putClientProperty("JDataGrid.switchUnsortedOrderEnabled", Boolean.TRUE); final JButton a = new JButton("Restore Model..."); a.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataGrid.setModel(new DefaultColumnSorter(createModel())); } }); getToolBar(JDataGridBean.MAIN_TOOLBAR).add(a); } // protected JDataGrid createDataGrid() { // JDataGrid dataGrid = new JDataGrid() { // public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { // Component c = super.prepareRenderer(renderer, row, column); // if(c instanceof JLabel) { // JLabel label = (JLabel)c; // label.setToolTipText(label.getText()); // } // return c; // } // }; // dataGrid.setModel(createModel()); // return dataGrid; // } protected DataGridModel createModel() { DataGridModel model = new DefaultDataGridModel(23, 9); // LargeDataGridModel model = new LargeDataGridModel(Character.MAX_VALUE, 256); Random random = new Random(); model.setValueAt("Date", 0, 0); model.setCellEditable(false, 0, 0); for(int i=1; i<21; i++) { model.setCellClass(Date.class, i, 0); model.setValueAt(new java.util.Date(), i, 0); } model.setValueAt("Number", 0, 1); model.setCellEditable(false, 0, 1); for(int i=1; i<21; i++) { model.setCellClass(Number.class, i, 1); model.setValueAt(new Integer(random.nextInt()), i, 1); } model.setValueAt("String", 0, 2); model.setCellEditable(false, 0, 2); for(int i=1; i<21; i++) { model.setValueAt("hello, world", i, 2); } model.setValueAt("Boolean", 0, 3); model.setCellEditable(false, 0, 3); for(int i=1; i<21; i+=2) { model.setCellClass(Boolean.class, i, 3); model.setValueAt(Boolean.TRUE, i, 3); model.setCellClass(Boolean.class, i+1, 3); model.setValueAt(Boolean.FALSE, i+1, 3); } model.setValueAt("Mutli line String", 0, 4); model.setCellEditable(false, 0, 4); model.setCellClass(String.class, 0, 4); for(int i=1; i<21; i++) { model.setCellClass(String.class, i, 4); model.setValueAt("hello, world", i, 4); } model.setValueAt("Cell Span Demo", 0, 5); model.setCellEditable(false, 0, 5); model.merge(new Cell(0, 0, 5, 6)); model.merge(new Cell(1, 3, 5, 7)); model.merge(new Cell(5, 8, 5, 7)); // demo attributes SimpleAttributeSet attr = new SimpleAttributeSet(); // 0 row demo color attr = new SimpleAttributeSet(); StyleConstants.setForeground(attr, Color.red); model.setCellAttributes(attr, 0, 0); attr = new SimpleAttributeSet(); StyleConstants.setForeground(attr, Color.green); model.setCellAttributes(attr, 0, 1); attr = new SimpleAttributeSet(); StyleConstants.setForeground(attr, Color.blue); model.setCellAttributes(attr, 0, 2); attr = new SimpleAttributeSet(); StyleConstants.setForeground(attr, Color.yellow); model.setCellAttributes(attr, 0, 3); attr = new SimpleAttributeSet(); StyleConstants.setForeground(attr, Color.pink); model.setCellAttributes(attr, 0, 4); attr = new SimpleAttributeSet(); StyleConstants.setForeground(attr, Color.orange); model.setCellAttributes(attr, 0, 5); // 4 row demo font attr = new SimpleAttributeSet(); StyleConstants.setBold(attr, true); model.setCellAttributes(attr, 4, 0); attr = new SimpleAttributeSet(); StyleConstants.setItalic(attr, true); model.setCellAttributes(attr, 4, 1); attr = new SimpleAttributeSet(); StyleConstants.setUnderline(attr, true); model.setCellAttributes(attr, 4, 2); attr = new SimpleAttributeSet(); StyleConstants.setStrikeThrough(attr, true); model.setCellAttributes(attr, 4, 3); attr = new SimpleAttributeSet(); StyleConstants.setFontFamily(attr, "Monospaced"); model.setCellAttributes(attr, 4, 4); attr = new SimpleAttributeSet(); StyleConstants.setFontSize(attr, 22); model.setCellAttributes(attr, 4, 5); model.setValueAt("hello", 4, 5); // 8 row demo background color attr = new SimpleAttributeSet(); StyleConstants.setBackground(attr, Color.red); model.setCellAttributes(attr, 8, 0); attr = new SimpleAttributeSet(); StyleConstants.setBackground(attr, Color.green); model.setCellAttributes(attr, 8, 1); attr = new SimpleAttributeSet(); StyleConstants.setBackground(attr, Color.blue); model.setCellAttributes(attr, 8, 2); attr = new SimpleAttributeSet(); StyleConstants.setBackground(attr, Color.yellow); model.setCellAttributes(attr, 8, 3); attr = new SimpleAttributeSet(); StyleConstants.setBackground(attr, Color.pink); model.setCellAttributes(attr, 8, 4); attr = new SimpleAttributeSet(); StyleConstants.setBackground(attr, Color.orange); model.setCellAttributes(attr, 8, 5); // 12 row demo icon attr = new SimpleAttributeSet(); StyleConstants.setIcon(attr, getResourceManager().getIcon("new.smallIcon")); model.setCellAttributes(attr, 12, 0); attr = new SimpleAttributeSet(); StyleConstants.setIcon(attr, getResourceManager().getIcon("open.smallIcon")); model.setCellAttributes(attr, 12, 1); attr = new SimpleAttributeSet(); StyleConstants.setIcon(attr, getResourceManager().getIcon("save.smallIcon")); model.setCellAttributes(attr, 12, 2); attr = new SimpleAttributeSet(); StyleConstants.setIcon(attr, getResourceManager().getIcon("saveAs.smallIcon")); model.setCellAttributes(attr, 12, 3); attr = new SimpleAttributeSet(); StyleConstants.setIcon(attr, getResourceManager().getIcon("import.smallIcon")); model.setCellAttributes(attr, 12, 4); attr = new SimpleAttributeSet(); StyleConstants.setIcon(attr, getResourceManager().getIcon("export.smallIcon")); model.setCellAttributes(attr, 12, 5); // demo background image attr = new SimpleAttributeSet(); attr.addAttribute("background-image", getResourceManager().getResource("logo-image")); model.setCellAttributes(attr, 5, 5); // demo format // 1-10 date format DateFormat format = DateFormat.getDateInstance(); for(int i=1; i<11; i++) { SimpleAttributeSet newAttr = new SimpleAttributeSet(); AttributeSet a = model.getCellAttributes(i, 0); if(a != null) { newAttr.addAttributes(a); } newAttr.addAttribute("format", format); model.setCellAttributes(newAttr, i, 0); } // 11-20 time format format = DateFormat.getTimeInstance(); for(int i=11; i<21; i++) { SimpleAttributeSet newAttr = new SimpleAttributeSet(); AttributeSet a = model.getCellAttributes(i, 0); if(a != null) { newAttr.addAttributes(a); } newAttr.addAttribute("format", format); model.setCellAttributes(newAttr, i, 0); } return model; } public static void main(String[] args) { final ColumnSorterDemo demo = new ColumnSorterDemo(); demo.setDefaultCloseOperation(JBean.EXIT_ON_CLOSE); SwingUtilities.invokeLater(new Runnable() { public void run() { demo.showFrame(); demo.getDataGrid().requestFocus(); } }); } }