我使用此类来设置JTables的样式
public class CellRenderer extends DefaultTableCellRenderer {@Overridepublic Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) { Component cell = super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column); if (isSelected) cell.setBackground(Color.YELLOW); else if (column == 0) cell.setBackground(new Color(0xDDDDD)); else cell.setBackground(new Color(0xFFFFFF)); return cell;}
创建此类的实例,并将其应用于需要设置样式的单元格。您可以使用isSelected参数编辑单元格突出显示颜色。
编辑
感谢您更新的示例,这是一个用于更改单元格渲染器的切换按钮的示例
首先使用默认的表格单元格渲染器为单元格创建颜色样式
public class CellHighlighterRenderer extends DefaultTableCellRenderer {@Overridepublic Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) { Component cell = super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column); cell.setBackground(Color.YELLOW); return cell;}
创建您的Jframe并添加JTable和按钮
public class Main extends Jframe {public Main() { super("Table Demo"); setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); setPreferredSize(new Dimension(300, 300)); setLocationRelativeTo(null); setLayout(new BorderLayout()); DefaultTableModel model = new DefaultTableModel(); model.setColumnCount(5); model.setRowCount(5); JTable table = new JTable(); table.setModel(model); //Get an instance of the column and the style to apply and hold a default style instance final TableColumn column = table.getColumnModel().getColumn(1); final CellHighlighterRenderer cellRenderer = new CellHighlighterRenderer(); final TableCellRenderer defaultRenderer = column.getCellRenderer(); //Now in your button listener you can toggle between the styles JButton button = new JButton("Click!"); button.addActionListener(new ActionListener() { private boolean clicked = false; @Override public void actionPerformed(ActionEvent e) { if (clicked) { column.setCellRenderer(cellRenderer); clicked = false; } else { column.setCellRenderer(defaultRenderer); clicked = true; } repaint(); //edit } }); getContentPane().add(table, BorderLayout.CENTER); getContentPane().add(button, BorderLayout.NORTH); pack(); setVisible(true);}public static void main(String[] args) { new Main();}
希望这可以帮助
编辑 我添加了一个重新绘制以清理最后一个示例。如果您只想定位特定的单元格,请更改表格单元格渲染器以仅渲染所需的单元格,如下所示
@Overridepublic Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) { Component cell = super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column); //add condition for desired cell if (row == 1 && column == 1) cell.setBackground(Color.YELLOW); return cell;}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)