繁体   English   中英

我可以在类型中清除JTable中的文本吗?

[英]Can I clear text in JTable when type?

我可以让我在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;
}

有什么建议吗?

更好的是可以选择JTable单元格中的所有文本

text.setText(text.getText())
text.selectAll

通过包装到invokeLater()

伟大的解决方法表选择 @camickr的所有编辑器

喔! trashgod。 你的榜样拯救了我的生命: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;
            }    ....

我是这样做的。 首先,我使用事件keyReleased ,然后获取我正在工作的行和列号,然后在该行设置值。 代码是这样的。

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);
    }
} 

这使得表的第三列在我使用键盘进行焦点移动时立即为null。

注意 :同一段代码可以放在MouseClicked事件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM