Не выбирая строку в JTable
У меня есть JTable с количеством строк, каждая строка состоит из нескольких JPanels. Я хочу, чтобы одна из строк в JTable не была выбрана. Я использовал:
panel.setFocusable(false);
на этом конкретном ряду. Однако при нажатии клавиши со стрелкой вниз на столе выбор исчезает, когда он попадает на нефокусируемую панель. Есть ли быстрый способ пропустить выделение всего вместе в этом ряду и просто выбрать следующий ряд?
1 ответ
Вы можете достичь этого с помощью ListSelectionListener
, Прочитайте больше Как написать слушателя выбора списка. Простой пример:
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class TestFrame extends JFrame{
private int notSelectable = 2;
private JTable t1;
public TestFrame(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
init();
pack();
setVisible(true);
}
private void init() {
t1 = new JTable(10,1);
t1.getSelectionModel().addListSelectionListener(getListener());
t1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
add(t1);
}
private ListSelectionListener getListener() {
return new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if(t1.getSelectedRow() == notSelectable){
if(notSelectable+1 == t1.getRowCount()){
t1.getSelectionModel().setSelectionInterval(0, 0);
} else {
t1.getSelectionModel().setSelectionInterval(notSelectable+1, notSelectable+1);
}
}
}
};
}
public static void main(String... strings) {
new TestFrame();
}
}