需要保持某些列可编辑和不可编辑,并且只允许双击单元格就可以进行单元格编辑 [英] Need to keep some columns editable and non-editable and allow cell editing on only double click on the cell
问题描述
在我的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屋!