栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

突出显示jtable中的单元格

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

突出显示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;}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455391.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号