У меня есть JTable с пользовательской моделью абстрактной таблицы, и я хотел бы выбрать строку в своей таблице и эту информацию для отображения в текстовых полях слева. Я хотел бы, чтобы это происходило автоматически без использования каких-либо кнопок. Единственный подход, который я могу придумать, включает кнопку. Моя модель стола выглядит так:
public class AdminTableModel extends AbstractTableModel {
private ArrayList<Contestant> contestants;
private String[] columns={"First Name", "Last Name", "Entry"};
public AdminTableModel(ArrayList<Contestant> contestants) {
this.contestants = contestants;
}
public AdminTableModel(List l) {
contestants.addAll(l);
}
public int getRowCount() {
return contestants.size();
}
public int getColumnCount() {
return columns.length;
}
public String getColumnName(int col) {
return columns[col];
}
public Object getValueAt(int row, int col) {
Contestant contestant = contestants.get(row);
switch(col){
case 0:
return contestant.getFirst_name();
case 1:
return contestant.getLast_name();
case 2:
return contestant.getEntry();
default:
return null;
}
}
}
С кодом для моей таблицы, похожим на это:
public class ContestantsTable extends JTable{
public ContestantsTable(ArrayList<Contestant> contestants) {
AdminTableModel atModel = new AdminTableModel(contestants);
this.setModel(atModel);
atModel.fireTableDataChanged();
}
}
Вот панель с текстовыми полями, которые я хочу обновить:
public class ContestantAddPanel extends JPanel {
private JLabel jlFirst_name;
private JLabel jlLast_name;
private JLabel jlEntry;
private JTextField jtfFirst_name;
private JTextField jtfLast_name;
private JTextField jtfEntry;
public ContestantAddPanel() {
jlFirst_name = new JLabel("First Name: ");
jlLast_name = new JLabel("Last Name: ");
jlEntry = new JLabel("Entry: ");
jtfFirst_name = new JTextField();
jtfLast_name = new JTextField();
jtfEntry = new JTextField();
this.setLayout(new GridLayout(3,2));
this.add(jlFirst_name);
this.add(jtfFirst_name);
this.add(jlLast_name);
this.add(jtfLast_name);
this.add(jlEntry);
this.add(jtfEntry);
}
public String getFirstName(){
return jtfFirst_name.getText();
}
public String getLastName(){
return jtfLast_name.getText();
}
public String getEntry(){
return jtfEntry.getText();
}
}
Я не ищу, чтобы вы написали мне решение, я только ищу руководство, так как я не могу найти то, что я хочу в Google. Такая как ссылка на учебник, оракул не очень информативен в этом вопросе, так как я не хочу обновлять строку в таблице, но в текстовых полях.