突出显示jtable中的单元格

突出显示jtable中的单元格,第1张

突出显示jtable中的单元格

我使用此类来设置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;}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5430917.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存