4

textFieldをExcelJTableのセルのように機能させることはできますか?入力時にテキストをクリアしますが、セルに入るときに編集できます。

この2つの操作は同じイベントになると思います。私が間違っている?

私は使用しようとしますが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;
}

なにか提案を?

4

3 に答える 3

4

JTable セル内のすべてのテキストを選択することをお勧めします

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

に包むことでinvokeLater()

@camickrによるすべてのエディターを選択するテーブル

于 2012-09-07T09:08:47.643 に答える
4

おお!ゴミ神。あなたの例は私の命を救った: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;
            }    ....
于 2012-09-10T03:47:20.797 に答える