我已经看到了一些这样做的例子,但我仍然不明白,也无法实现。
我想做的是在单元格更改(焦点)上,下一个选定的单元格将选择所有文本,以供用户完全更改它。
关于如何做的任何想法?
// update //不知何故我设法完成了以下课程,但
实现此
tblLayers.setDefaultEditor(String.class,new Classes.CellEditor());
不会产生任何结果,即“尚不支持”。不抛出..
我应该如何解决这个问题?
import java.awt.Component;
import java.util.EventObject;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.event.CellEditorListener;
import javax.swing.table.TableCellEditor;
public class CellEditor extends JTextField implements TableCellEditor {
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
// final JTextField ec = (JTextField) editorComponent;
//
// ec.setText((String) value);
//
// // selectAll, so that whatever the user types replaces what we just put there
// ec.selectAll();
//
// SwingUtilities.invokeLater(new Runnable() {
//
// public void run() {
// // make the component take the keyboard focus, so the backspace key works
// ec.requestFocus();
//
// SwingUtilities.invokeLater(new Runnable() {
//
// public void run() {
// // at this point the user has typed something into the cell and we
// // want the caret to be AFTER that character, so that the next one
// // comes in on the RHS
// ec.setCaretPosition(ec.getText().length());
// }
// });
// }
// });
// return editorComponent;
throw new UnsupportedOperationException("Not supported yet.");
}
public Object getCellEditorValue() {
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean isCellEditable(EventObject anEvent) {
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean shouldSelectCell(EventObject anEvent) {
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean stopCellEditing() {
throw new UnsupportedOperationException("Not supported yet.");
}
public void cancelCellEditing() {
throw new UnsupportedOperationException("Not supported yet.");
}
public void addCellEditorListener(CellEditorListener l) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void removeCellEditorListener(CellEditorListener l) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
关于
editorComponent
,我该在哪里初始化此变量?
变量editorComponent
是的字段DefaultCellEditor
。
代替
class CellEditor extends JTextField implements TableCellEditor
考虑
class CellEditor extends DefaultCellEditor
然后,您可以执行以下操作:
@Override
public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int column) {
JTextField ec = (JTextField) editorComponent;
if (isSelected) {
ec.selectAll();
}
return editorComponent;
}
附录:如@
Edoz所建议,并在此完整示例中进行了说明,您可以selectAll()
在鼠标单击启动编辑时有选择地重新排队。
JTable table = new JTable(model) {
@Override // Always selectAll()
public boolean editCellAt(int row, int column, EventObject e) {
boolean result = super.editCellAt(row, column, e);
final Component editor = getEditorComponent();
if (editor == null || !(editor instanceof JTextComponent)) {
return result;
}
if (e instanceof MouseEvent) {
EventQueue.invokeLater(() -> {
((JTextComponent) editor).selectAll();
});
} else {
((JTextComponent) editor).selectAll();
}
return result;
}
};
问题内容: 我想让可编辑JTables中的编辑器在开始编辑时选择单元格中的所有文本。我已经尝试了几件事,都是围绕从TableCellEditor.getTableCellEditorComponent方法返回的组件上调用JTextComponent.selectAll()进行的。我尝试过的所有方法均无济于事。 在最近的尝试中,我从Swing教程更改了SimpleTableDemo类,以使用自定义T
问题内容: 在将此标记为重复之前,我希望您认识到,实际上没有人为这个特定问题提供好的答案。在焦点/单击时选择contenteditable div中的所有文本时,接受的答案和TimDown的答案都无济于事,因为它们仅在元素已被聚焦时才起作用。就我而言,我希望单击一个按钮后即可选择contenteditablediv中的所有文本,即使该div事先未聚焦。 我该怎么办? 问题答案: 我使用了该线程中的
在visual studio中编译项目时,我会自动运行一个模糊处理程序。迷惑的。dll文件以相同的文件名保存,但保存在子文件夹中。 文件夹结构 问题:我能确保Inno Setup编译<code>FileA吗。dll,而不是,如果“安全”是否存在?
要组织和排列您的图稿,请使用工具以便精确地选择、放置和堆叠对象。您可以测量和对齐对象;编组对象以便能够将其视为一个单元进行操作;有选择地隔离、锁定或隐藏对象。 选区选项和首选项 用于选择对象的选项 在可以修改某个对象之前,需要将其与周围的对象区分开来。只需选择对象,即可加以区分。只要选择了对象或者对象的一部分,即可对其进行编辑。 Illustrator 提供以下选择方法和工具: 隔离模式 可让您快
问题内容: 我目前正在使用JTable来显示数据库中的内容。我想为用户提供便利,以便他可以使用Shift +箭头键选择想要的行数,然后稍后使用提供的删除选项删除那些记录。请提供一个小例子。 问题答案: 您需要允许多项选择: 然后,您需要编写适当的选择侦听器。这有点困难,请尝试在Google相关解决方案中查找。您可以看一个选择侦听器的示例。
我试图改变JTable的选择行为,使其能够在不使用CTRL修饰符的情况下向选择添加和移除行。方法: 似乎正是我所要寻找的,尤其是这种情况: 是我想做的。问题是我做不到。也许我遗漏了一些关于内部JTable工作的信息,但下面是我的代码: 这似乎是在不务正业。有谁能告诉我问题出在哪里吗? 多谢了。