TableCellRenderer继续使用JTable | | Java Swing进行绘制

TableCellRenderer继续使用JTable | | Java Swing进行绘制,java,swing,jtable,tablecellrenderer,Java,Swing,Jtable,Tablecellrenderer,我正在做一个小的JTable。现在看起来是这样的。 正如你们所看到的,它一直在用最后一种颜色作画,由于某种原因,我无法修复它 String[] columnNames = { "Spieler", "Verfügbare Truppen", "besetzte Länder" }; Object[][] data = { { Player1.getName(), Player1.troopscore, Player1.countryscore }, {

我正在做一个小的
JTable
。现在看起来是这样的。 正如你们所看到的,它一直在用最后一种颜色作画,由于某种原因,我无法修复它

    String[] columnNames = { "Spieler", "Verfügbare Truppen", "besetzte Länder" };

    Object[][] data = { { Player1.getName(), Player1.troopscore, Player1.countryscore },
            { Player2.getName(), Player2.troopscore, Player2.countryscore },
            { Player3.getName(), Player3.troopscore, Player3.countryscore },
            { Player4.getName(), Player4.troopscore, Player4.countryscore },
            { Player5.getName(), Player5.troopscore, Player5.countryscore },
            { Player6.getName(), Player6.troopscore, Player6.countryscore },

    };

    table = new JTable(data, columnNames) {

        @Override
        public Component prepareRenderer(TableCellRenderer renderer, int row, int col) {
            Component comp = super.prepareRenderer(renderer, row, col);

            for (int i = 0; i < playerlist.size(); i++) {
                Object value = getModel().getValueAt(i, 0);

                {

                    if (row == i && col == 0 && value == playerlist.get(i).getName()) {

                        {
                            System.out.println(value);
                            comp.setBackground(playerlist.get(i).player_color);
                        }

                    }

                }
            }

            return comp;

        }
    };
String[]columnNames={“斯皮尔勒”、“弗吕格巴尔·特鲁彭”、“贝塞茨特州”};
对象[][]数据={{Player1.getName(),Player1.troopscore,Player1.countryscore},
{Player2.getName(),Player2.troopscore,Player2.countryscore},
{Player3.getName(),Player3.troopscore,Player3.countryscore},
{Player4.getName(),Player4.troopscore,Player4.countryscore},
{Player5.getName(),Player5.troopscore,Player5.countryscore},
{Player6.getName(),Player6.troopscore,Player6.countryscore},
};
表=新的JTable(数据、列名称){
@凌驾
公共组件预渲染器(TableCellRenderer渲染器,int行,int列){
组件组件=super.prepareRenderer(渲染器、行、列);
对于(int i=0;i

非常感谢您的帮助:)

您必须每次都打电话给公司挫折处。循环应该决定使用什么颜色,而不是是否调用comp.setBackground。注意:您需要使用对象的
equals
方法比较值。在大多数情况下,将它们与
==
进行比较将失败。在prepareRenderer(…)方法中不应该有循环代码。该表将自动为每个单元格调用渲染器。