Java 键入时是否可以清除JTable中的文本?
我可以让Java 键入时是否可以清除JTable中的文本?,java,swing,jtable,textfield,tablecelleditor,Java,Swing,Jtable,Textfield,Tablecelleditor,我可以让JTable中的文本字段像Excel中的单元格一样工作吗? 键入时清除文本,但进入单元格时可以进行编辑 我认为这两个操作将用于同一事件。我错了吗 我尝试使用按下的键,但没有任何效果。TT-TT 这是我的密码 private JTable getTblMaster() { if (tblMasterData == null) { tblMasterData = new JTable() { private static final long
JTable
中的文本字段像Excel中的单元格一样工作吗?
键入时清除文本,但进入单元格时可以进行编辑
我认为这两个操作将用于同一事件。我错了吗
我尝试使用按下的键,但没有任何效果。TT-TT
这是我的密码
private JTable getTblMaster() {
if (tblMasterData == null) {
tblMasterData = new JTable() {
private static final long serialVersionUID = 1L;
public TableCellEditor getCellEditor(int row, int column) {
TableColumn tableColumn = getColumnModel()
.getColumn(column);
TableCellEditor editor = tableColumn.getCellEditor();
try {
if (editor == null) {
final JTextField text = new JTextField();
/*
text.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(KeyEvent e){
}
});
SwingUtilities.invokeLater(new Runnable(){
public void run(){
}
});
*/
editor = new DefaultCellEditor(text);
;
return editor;
}
} catch (Exception e) {
LogWriter.error(e);
}
return editor;
}
};
}
return tblMasterData;
}
有什么建议吗 最好选择JTable单元格中的所有文本
text.setText(text.getText())
text.selectAll
通过包装到invokeLater()
@camickr的出色解决方案哦!垃圾神。救了我的命:D
我所需要的只是下面的代码,它可以工作。多容易啊!多谢各位
private JTable getTblMaster() {
if (tblMasterData == null) {
tblMasterData = new JTable() {
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 KeyEvent) {
((JTextComponent) editor).selectAll();
}
return result;
} ....
我是这样做的。首先,我使用事件键released,然后获取我正在处理的行和列编号,然后在该行设置值。代码是这样的
private void purchases_TBLKeyReleased(java.awt.event.KeyEvent evt) {
int rowWorking = purchases_TBL.getSelectedRow();
int columnWorking = purchases_TBL.getSelectedColumn();
if(columnWorking==3){
model.setValueAt(null, rowWorking, columnWorking);
}
}
这会使表的第三列在我使用键盘时立即变为空
注意:同一段代码可以放在鼠标点击事件中。谢谢您的回复,很抱歉没有这么多描述,但我不想在进入该单元格时包装文本。我只想在键入数据时替换数据(尚未进入单元格),但不想更改双击或按F2键时的行为(仍然有以前的数据,但没有将该文本换行)。在这种情况下,换行意味着作为Runnable
调用,而不是中断文本。见此相关报道。