Как сделать один столбец невыбираемым в Java? - PullRequest
2 голосов
/ 28 октября 2011

Я делаю свой проект Java с использованием NetBeans.Я хочу сделать целые столбцы, кроме одного, невыбираемыми. Пользователь должен иметь возможность щелкать строки только в одном столбце.Как это сделать?

Ответы [ 2 ]

4 голосов
/ 05 декабря 2012

Вы можете добавить ListSelectionListener к вашей таблице.Если текущий выбор является невыбираемым столбцом, вы можете отменить выбор.Вот пример:

public class MyTable extends JTable(){
    //the column to disable
    //... and the currently selected column
    private int disabled_col = 2, cur_col = 0;

    public MyTable(){
        //Create a column selection listener
        final ListSelectionModel sel = this.getColumnModel().getSelectionModel();
        sel.addListSelectionListener(new ListSelectionListener(){
            @Override
            public void valueChanged(ListSelectionEvent e) {
                //If the column is disabled, reselect previous column
                if (sel.isSelectedIndex(disabled_col))
                    sel.setSelectionInterval(cur_col,cur_col);
                //Set current selection
                else cur_col = sel_mod1.getMaxSelectionIndex();
            }
        });
    }
}

Этот код не обрабатывает несколько отключенных столбцов или выборок, охватывающих несколько столбцов.Вам придется изменить его для обработки этих случаев.

2 голосов
/ 28 октября 2011

Используйте setColumnSelectionAllowed(false); и установите для него предпочтительный столбец, должно работать.Думаю, я использовал его в своем недавнем проекте с JTable.

«Выбор столбца» контролирует columnSelectionAllowed, который имеет метод сеттера setColumnSelectionAllowed и метод геттера getColumnSelectionAllowed.Когда это связанное свойство равно truerowSelectionAllowed привязанное свойство равно false), пользователь может выбирать по столбцу.

Из http://download.oracle.com/javase/tutorial/uiswing/components/table.html

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