Как я должен использовать jTable для представления списка объектов? - PullRequest
0 голосов
/ 25 июня 2011

Я пишу программу менеджера хоккейного пула, и у меня возникают проблемы с получением jTable для представления моего списка игроков.У меня есть три класса: Team, Roster и Player.У команды есть два члена Ростера, Состав Скамьи и Состав Списка.каждый список содержит ArrayList игроков.Игроки могут быть добавлены динамически.Я хочу иметь два jTables, один для составления списка игроков в Bench Roster, и один для составного списка.Я сделал эту модель таблицы, но я чувствую, что я не в порядке:

public class PlayerTable extends AbstractTableModel {

    private String[] columnNames = {"Name", "Team", "Position", "Injured?", "Salary",     "PowerRanking"};
    private Roster playerList;

    public PlayerTable(Roster players){
    playerList = players;
    }
        public int getColumnCount() {
        return columnNames.length;
    }

    public int getRowCount() {
            return playerList.getNumPlayers();
    }

    public String getColumnName(int col) {
        return columnNames[col];
    }
    public boolean addPlayer(String name, String team, int teamNumber) throws Exception{
        return playerList.addPlayer(name, team, teamNumber);

    }

    public Object getValueAt(int row, int col) {
        Object returnValue = "----";
        switch (col) {
            case 0:
                returnValue = playerList.getPlayer(row).getName();
                break;
            case 1:
                returnValue = playerList.getPlayer(row).getTeam();
                break;
            case 2:
                returnValue = playerList.getPlayer(row).getPosition();
                break;
            case 3:
                returnValue = playerList.getPlayer(row).isInjured();
                break;
            case 4:
                returnValue = playerList.getPlayer(row).getSalary();
                break;
            case 5:
                returnValue = playerList.getPlayer(row).getPawerRanking();
                break;

        }
        return returnValue;

    }

    public Class getColumnClass(int c) {
        return getValueAt(0, c).getClass();
    }
}

И я инициализирую свои jTables с помощью:

jTableBench.setModel(new PlayerTable(userTeam.getBench())

Я получаю пустую таблицу, но онаимеет правильные имена столбцов.теперь, когда я иду и добавляю игрока на скамейку, используя

userTeam.addPlayerToBench(name, team...)

Таблица не меняется.Я на правильном пути здесь?это лучший способ использовать таблицу для представления набора объектов, как это?Как я могу получить таблицу, чтобы отразить изменения, которые я внес в реестр скамейке?

Ответы [ 2 ]

2 голосов
/ 25 июня 2011

Модель Bean Table позволяет легко отображать пользовательские объекты.

1 голос
/ 25 июня 2011

Ваша модель таблицы должна инициировать события, чтобы сообщить ее представлению об изменении модели. В вашем случае вы должны использовать fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1). Посмотрите на javadoc AbstractTableModel, чтобы узнать, какие события могут быть запущены.

Таким образом, вы должны использовать модель, чтобы добавить игрока. Модель добавит игрока в список playerList, который она содержит, а также вызовет соответствующее событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...