public ImageIcon createCheckBoxImageIcon(boolean checked, boolean highlighted) { CheckBoxIcon cbIcon = new CheckBoxIcon(13); BufferedImage image = new BufferedImage(13, 13, (BufferedImage.TYPE_INT_ARGB)); ImageIcon icon = new ImageIcon(image); Graphics2D g2d = image.createGraphics(); cbIcon.paintIcon(checked, highlighted, g2d, 0, 0); return icon; }
RowHeaderRenderer(JTable table) { CheckBoxIcon cbIcon = new CheckBoxIcon(13); iconUnChecked = cbIcon.createCheckBoxImageIcon(false, false); iconChecked = cbIcon.createCheckBoxImageIcon(true, false); setOpaque(true); setBorder( BorderFactory.createCompoundBorder( BorderFactory.createMatteBorder( 0, 0, 1, 1, geogebra.awt.Color.getAwtColor(GeoGebraColorConstants.TABLE_GRID_COLOR)), BorderFactory.createEmptyBorder(0, 5, 0, 2))); setHorizontalAlignment(LEFT); setFont(table.getFont()); }
private void createGUI() { // set table and column renderers dataTable.setDefaultRenderer(Object.class, new MyCellRenderer()); columnHeader = new MyColumnHeaderRenderer(); columnHeader.setPreferredSize( new Dimension(preferredColumnWidth, SpreadsheetSettings.TABLE_CELL_HEIGHT)); for (int i = 0; i < dataTable.getColumnCount(); ++i) { dataTable.getColumnModel().getColumn(i).setHeaderRenderer(columnHeader); dataTable.getColumnModel().getColumn(i).setPreferredWidth(preferredColumnWidth); } // disable row selection (for now) dataTable.setColumnSelectionAllowed(false); dataTable.setRowSelectionAllowed(false); // dataTable.setAutoResizeMode(JTable.); dataTable.setPreferredScrollableViewportSize(dataTable.getPreferredSize()); dataTable.setMinimumSize(new Dimension(100, 50)); // dataTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN); dataTable.setAutoCreateColumnsFromModel(false); dataTable.setGridColor(TABLE_GRID_COLOR); // create a scrollPane for the table scrollPane = new JScrollPane(dataTable); scrollPane.setBorder(BorderFactory.createEmptyBorder()); // create row header rowHeader = new MyRowHeader(this, dataTable); scrollPane.setRowHeaderView(rowHeader); // create enableAll button and put it in the upper left corner CheckBoxIcon cbIcon = new CheckBoxIcon(13); ImageIcon iconUnChecked = cbIcon.createCheckBoxImageIcon(false, false); ImageIcon iconChecked = cbIcon.createCheckBoxImageIcon(true, false); btnEnableAll = new JButton(); btnEnableAll.setIcon(iconUnChecked); btnEnableAll.setDisabledIcon(iconChecked); btnEnableAll.setEnabled(false); btnEnableAll.setBorderPainted(false); btnEnableAll.setBackground( geogebra.awt.Color.getAwtColor(GeoGebraColorConstants.TABLE_BACKGROUND_COLOR_HEADER)); btnEnableAll.setContentAreaFilled(false); btnEnableAll.setHorizontalAlignment(SwingConstants.LEFT); btnEnableAll.addActionListener(this); Corner upperLeftCorner = new Corner(); upperLeftCorner.setLayout(new BorderLayout()); upperLeftCorner.add(btnEnableAll, BorderLayout.WEST); upperLeftCorner.setBorder( BorderFactory.createCompoundBorder( BorderFactory.createMatteBorder(0, 0, 1, 1, TABLE_GRID_COLOR), BorderFactory.createEmptyBorder(0, 5, 0, 2))); // set the other corners scrollPane.setCorner(ScrollPaneConstants.UPPER_LEFT_CORNER, upperLeftCorner); scrollPane.setCorner(ScrollPaneConstants.LOWER_LEFT_CORNER, new Corner()); scrollPane.setCorner(ScrollPaneConstants.UPPER_RIGHT_CORNER, new Corner()); lblHeader = new JLabel(); lblHeader.setHorizontalAlignment(JLabel.LEFT); lblHeader.setBorder( BorderFactory.createCompoundBorder( BorderFactory.createEtchedBorder(), BorderFactory.createEmptyBorder(2, 5, 2, 2))); // finally, load up our JPanel this.setLayout(new BorderLayout()); this.add(lblHeader, BorderLayout.NORTH); this.add(scrollPane, BorderLayout.CENTER); this.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); this.setMinimumSize(dataTable.getPreferredSize()); }