【问题标题】:Java Changing the color of a certain row in JTable [duplicate]Java更改JTable中某行的颜色[重复]
【发布时间】:2015-04-24 23:11:02
【问题描述】:

回答: 我不允许发布答案...竖起大拇指stackoverflow!!!

但这里是:

天哪……

我做到了,实际上它比我想象的要容易......

这是我的解决方案:

tbl_needaction = new javax.swing.JTable()
    {
        public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
        {
            Date d = new Date();
            DateFormat df = new SimpleDateFormat("dd.MM.yyyy");
            java.util.Date acdate = null;
            Component c = super.prepareRenderer(renderer, row, column);

            //  Color row based on a cell value

            if (!isRowSelected(row))
            {
                c.setBackground(getBackground());
                int modelRow = convertRowIndexToModel(row);
                String sd = "";
                sd = (String)getModel().getValueAt(modelRow, 5);
                try {
                    acdate = df.parse(sd);
                } catch (ParseException ex) {
                    Logger.getLogger(EditApplicationJFrame.class.getName()).log(Level.SEVERE, null, ex);
                }

                if (d.compareTo(acdate)>=0){
                        c.setBackground(Color.RED);
                }
            }

            return c;
        }
    };

我必须通过 NotePad++ 编辑它,因为 NetBeans 不允许我编辑自动生成的 initComponents()


问题: 我知道,有很多关于这个问题的示例和教程,但它们似乎都不适合我......

我正在从我在 JTable 中显示的 sql 数据库中获取数据。有一个日期叫做“ActionPoint”。现在我想将“ActionPoint”等于今天或“小于”今天的每一行标记为红色。

我的代码今天与我的 jTable 中的 ebery 行的“ActionPoint”进行比较:

for(int row = 0;row < dbApplicantsTableModel.getRowCount();row++) {

            String sd = "";
            sd = (String) dbApplicantsTableModel.getValueAt(row, 5);
            try {
                acdate = df.parse(sd);
            } catch (ParseException ex) {
                Logger.getLogger(EditApplicationJFrame.class.getName()).log(Level.SEVERE, null, ex);
            }

            if (acdate.compareTo(d)<=0){

            }


    }

所以我应该有我的“行”,现在应该涂成红色。

谁能提供一个简单地获取一行,然后将这一行的背景设置为红色的方法?

编辑:

现在我的代码如下所示:

for(int row = 0;row < dbApplicantsTableModel.getRowCount();row++) {


            String sd = "";
            sd = (String) dbApplicantsTableModel.getValueAt(row, 5);
            try {
                acdate = df.parse(sd);
            } catch (ParseException ex) {
                Logger.getLogger(EditApplicationJFrame.class.getName()).log(Level.SEVERE, null, ex);
            }

            if (acdate.compareTo(d)<=0){
                dbApplicantsTableModel.setRowColour(row, Color.RED);
            }

但我没有将任何背景设置为红色!

遗憾的是,我需要 10 的声望才能发布图片 -.-

【问题讨论】:

标签: java swing colors jtable row


【解决方案1】:

我想将“ActionPoint”等于今天或“小于”今天的每一行标记为红色。

查看Table Row Rendering 了解解决此问题的简单方法。该方法覆盖了 JTable 的 prepareRenderer(...) 方法,因此您可以使用简单的“if 语句”将逻辑添加到一个位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2011-08-06
    • 2013-05-28
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    相关资源
    最近更新 更多