Невозможно выделить следующую редактируемую ячейку в Jtable на вкладке к следующей строке - PullRequest
0 голосов
/ 11 марта 2019

Ниже приведена моя пользовательская логика для перехода к следующей редактируемой ячейке. Добавляет строку автоматически при вкладке из определенного столбца.

Что отлично работает:

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

Что мне нужно:

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

Примечание:

Я сделал это table.cellSelectionEnabled(true); и до сих пор не работает.

InputMap im = itemTable.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
KeyStroke tab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);
final Action oldTabAction = itemTable.getActionMap().get(im.get(tab));
Action tabAction = new AbstractAction()
{
    public void actionPerformed(ActionEvent e)
    {
        oldTabAction.actionPerformed( e );
        JTable table = (JTable)e.getSource();
        int rowCount = table.getRowCount();
        int columnCount = table.getColumnCount();
        int row = table.getSelectedRow();
        int column = table.getSelectedColumn();
        FLItemRuleInfo itemRuleInfo = itemTableModel.getItemRuleInfoList().get(row);

        while (! itemTableModel.isCellEditable(row, column) )
        {

            if((itemRuleInfo.getItem()==null || itemRuleInfo.getItem().getItemId()==null || itemRuleInfo.getItem().getItemId().isEmpty())){
                column=1;
                break;
            }
            column += 1;
            if (column == columnCount)
            {
                column = 1;
                row +=1;
            }
           /* if (row == rowCount)
            {
                row = 0;
            }*/
            if (row == table.getSelectedRow()
            &&  column == table.getSelectedColumn())
            {
                break;
            }
        }


        table.changeSelection(row, column, false, false);
        if(column==8 && (row == rowCount-1) && itemRuleInfo.getItem()!=null){
            itemTableModel.addRow(new FLItemRuleInfo());

        }                       

    }
};
itemTable.getActionMap().put(im.get(tab), tabAction);

1 Ответ

0 голосов
/ 18 марта 2019

getValueAt возвращал ноль для конкретного случая, и я изменил ноль на пустую строку "".Это решило проблему.

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