Как сделать так, чтобы ячейка JTable при однократном щелчке делала разные вещи? - PullRequest
3 голосов
/ 04 апреля 2011

Я использую редактируемый JTable, который содержит столбец с именем Тема. Когда первая строка пуста, и пользователь щелкает ячейку темы, чтобы добавить новую задачу, по умолчанию пользователь должен щелкнуть дважды, чтобы сделать ячейку редактируемой. Я хочу сделать его редактируемым по одному щелчку мыши и открыть другую форму по двойному щелчку. Я попытался MouseListener, но не смог решить его. Есть ли способ решить эту проблему? Если так, что это?

Мой код:

class mouseRenderer extends DefaultTableCellRenderer {
    JLabel lblcell = new JLabel();

    public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row,
            int column) {
        ttable.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                selrow = ttable.getSelectedRow();
                selcol = ttable.getSelectedColumn();

                if(e.getClickCount() == 1) {
                    if(selrow == 0) {
                        lblcell.setText("");
                    }
                }
            }
        });
        return lblcell;
    }
}

Ответы [ 3 ]

5 голосов
/ 04 апреля 2011

Для редактирования одним щелчком мыши вы можете попробовать метод setClickCountToStart () для celleditor, используемого в вашей jtable.

4 голосов
/ 04 апреля 2011

Вы можете попробовать создать собственный CellEditor, подобный этому, и установить для него значение setCellEditor()

public class MyTableCellEditor extends AbstractCellEditor implements TableCellEditor {

    public boolean isCellEditable(EventObject evt) {
        if (evt instanceof MouseEvent) {
            int clickCount;

            // For single-click activation
            clickCount = 1;

            // For double-click activation
            clickCount = 2;

            // For triple-click activation
            clickCount = 3;

            return ((MouseEvent)evt).getClickCount() >= clickCount;
        }
        return true;
    }
}
0 голосов
/ 04 апреля 2011

MouseListener - способ захвата двойного щелчка по строке.Это должно работать нормально.

Что касается редактирования одним щелчком мыши, вы можете выбрать строки, используя MouseMotionListener, и позволить JTable выполнить редактирование одним щелчком мыши.Другим вариантом может быть использование MouseListener для обнаружения ячейки, по которой щелкнули, но это становится немного грязным.

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