需要保持某些列可编辑和不可编辑,并且只允许双击单元格就可以进行单元格编辑 [英] Need to keep some columns editable and non-editable and allow cell editing on only double click on the cell

查看:122
本文介绍了需要保持某些列可编辑和不可编辑,并且只允许双击单元格就可以进行单元格编辑的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的JTable实现中.我必须将某些列保持可编辑状态,而将某些列保持不可编辑状态,因此我必须覆盖isCellEditable-

In my implementation of JTable. I have to keep some columns editable and some columns UN-editable so I have override isCellEditable -

@Override
public boolean isCellEditable(int row, int col) {
    if (col == uneditableColumn) {
        return false;
    }
    return bEdit;
}

现在,我的要求是仅允许双击编辑单元格,即,如果用户双击单元格,则只有它进入可编辑模式.为此,我将必须制作自己的CellEditor并覆盖.

Now my requirement is to allow edit the cell only on Double click i.e. if user double clicks on cell then only it comes into editable mode. For this - I will have to make your own CellEditor and override.

public boolean isCellEditable( EventObject e )

有人可以建议使用-

public boolean isCellEditable(int row, int col) 

请帮助-

推荐答案

is to allow edit the cell only on Double click i.e. if user double clicks 
on cell then only it comes into editable mode.

您可以查看 DefaultCellEditor#clickCountToStart

用于CellEditor或方法重写isCellEditable(AbstractTableModel)

for CellEditor or methods override isCellEditable (AbstractTableModel)

@Override
public boolean isCellEditable(EventObject anEvent) {
    if (anEvent instanceof MouseEvent) {
        return ((MouseEvent) anEvent).getClickCount() >= clickCountToStart;
    }
    return true;
}

对于DefaultTableModel可能是

for DefaultTableModel could it be

import javax.swing.*;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.*;

public class EditorRendererClickCountToStart {

    public EditorRendererClickCountToStart() {
        TableModel model = new DefaultTableModel(new Object[][]{
                    {"A", "Item 0"}, {"B", "Item 1"}, {"C", "Item 2"},
                    {"D", "Item 3"}, {"E", "Item 4"}}, new String[]{"TextField", "Combo"});
        JTable table = new JTable(model);
        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        DefaultCellEditor editor = new DefaultCellEditor(new JComboBox(new Object[]{
                    "Item 0", "Item 1", "Item 2", "Item 3", "Item 4"}));
        editor.setClickCountToStart(2);
        table.getColumnModel().getColumn(1).setCellEditor(editor);
        table.setPreferredScrollableViewportSize(table.getPreferredSize());
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new JScrollPane(table));
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        try {
            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
                System.out.println(info.getName());
                if ("Nimbus".equals(info.getName())) {
                    UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (UnsupportedLookAndFeelException e) {// handle exception
        } catch (ClassNotFoundException e) {// handle exception
        } catch (InstantiationException e) {// handle exception
        } catch (IllegalAccessException e) {// handle exception
        }
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                new EditorRendererClickCountToStart();
            }
        });
    }
}

这篇关于需要保持某些列可编辑和不可编辑,并且只允许双击单元格就可以进行单元格编辑的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆