public void updateTable(UIDataInterface data) {
        StatisticsInterface stats = data.getStats();
        PlayerInterface[] players = data.getPlayers();

        // round number
        int rn = stats.getCurrentRoundNo();
        // roundnumber since start
        int rnst = rn - stats.getStartingRoundNo() + 1;

        if (stats.getRoundsLeft() > 0) {
            for (int i = this.data.getRowCount(); i < rnst; i++) {
                Object[] rowData = new Object[this.data.getColumnCount()];
                rowData[0] = rn - (rnst - this.data.getRowCount()) + 1;
                for (int j = 0; j < players.length; j++) {
                    if (rn - (rnst - this.data.getRowCount()) + 1 == rnst) {
                        TableEntry entry = new TableEntry();
                        entry.forecast = -1;
                        entry.points = -1;
                        rowData[j + 1] = entry;
                    } else {
                        TableEntry entry = new TableEntry();
                        rowData[j + 1] = entry;
                    }
                }
                this.data.addRow(rowData);
            }
            for (int i = 0; i < players.length; i++) {
                TableEntry te = (TableEntry) this.data.getValueAt(rnst - 1, i + 1);
                if (stats.hasDataIn(players[i], rn)) {
                    te.forecast = stats.getForecastIn(players[i], rn);
                    te.made = stats.getTricksMadeIn(players[i], rn);
                }
                te.points = -1;

                // set points and tricks of previous round
                if (rnst > 1) {
                    setLastRound(stats, players, rn, rnst, i);
                }
            }
        } else {
            LOG.debug("Game is finished, do not update the score table.");
            // set points and tricks of previous round
            for (int i = 0; i < players.length; i++) {
                setLastRound(stats, players, rn, rnst, i);
            }
        }
        frame.repaint();
    }