У меня есть JTable, который позволяет выбирать строки только с использованием ListSelectionListener, как показано в приведенном ниже фрагменте кода.В JTable есть две проблемы:
Q1) Хотя я установил первую строку, выбранную по умолчанию, с помощью метода setSelectionRow, связанное событие listSelection не запускается при запуске программы.Событие вызывается только в том случае, если я щелкаю по другой строке, но не по первой. Как вы думаете, что мне следует сделать, чтобы исправить это, учитывая приведенный ниже код?
Q2) Когда я выбираю строку, это не так.окрашены в синий цвет в JTable.Я заметил, что это начало происходить после того, как я ввел ListSelectionListener в модель выбора JTable.Перед добавлением слушателя таблица делала этот цвет бизнеса, когда я выбрал строку. Как вы думаете, что мне следует сделать, чтобы исправить это, учитывая приведенный ниже фрагмент кода?Большое спасибо.
jTableBookings = new javax.swing.JTable();
jTableBookings.setModel(new MyBookingTableModel(bookingTableData));
jTableBookings.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
jTableBookings.setRowSelectionAllowed(true);
jTableBookings.setCellSelectionEnabled(false);
jTableBookings.setColumnSelectionAllowed(false);
initColumnSizesForMinaBokBokningarJTable(jTableBookings);
//QUESTION 1
//Set selected row to first row for inital load.
if (jTableBookings.getModel().getRowCount() > 0) {
jTableBookings.setRowSelectionInterval(0, 0);
}
//QUESTION 2
jTableBookings.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
int sel = jTableBookings.getSelectedRow();
fillBookingRecordFields(sel); //Here we do some business logic based on the selected row
}
});
jScrollPane9.setViewportView(jTableBookings);