我可以将JTable
中的textField设置为 Excel 中的单元格吗?
在键入时清除文本,但在进入单元格时可以编辑。
我认为这两个操作将进入同一事件。我错了吗?
我尝试使用keyPressed
,但没有任何效果。 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;
}
有什么建议吗?
答案 0 :(得分:4)
更好的是可以选择JTable单元格中的所有文本
text.setText(text.getText())
text.selectAll
包装到invokeLater()
@camickr
提供了很好的解决方法Table Select All Editor答案 1 :(得分:4)
喔! trashgod。 Your example拯救了我的生命: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;
} ....
答案 2 :(得分:0)
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);
}
}
这使得当我使用键盘将焦点移动到表格时,表格的第三列为空。
注意:同一段代码可以放在 MouseClicked 事件中。