我的做的实例
  void jTable1_mouseClicked(MouseEvent e) {
        int row = jTable1.getSelectedRow();
      Vector alldata = db2model.getTableData();
      Vector rowdata = (Vector) alldata.elementAt(row);
      jTextField1.setText( (String) rowdata.elementAt(0));
      jTextField2.setText( (String) rowdata.elementAt(1));
      jTextField3.setText( (String) rowdata.elementAt(3));  }
希望对你有帮助

解决方案 »

  1.   

    我提点思路(可能不是最佳的)
    1、自定义DefaultCellEditor。并用JTextField构造这个自定义的DefaultCellEditor。这个JTextField可以是类全局变量。
    2、为JTextField加入FocusListener即焦点侦听器,在focusGained()方法中加入文本全选处理代码。
       如:jtxtEditor.selectAll();
    3、调用JTable.setCellEditor()方法把自定义DefaultCellEditor设为当前TableCellEditor。
    这样应该可以。
      

  2.   

    oboooa() :
    你说的办法只能实现当用户用鼠标单击该Cell时,cell全选文本。但在用户用上下箭头键在Cell中导航时,当前的Cell并不能全选文本。哎,为了挣到楼主的100大分,我苦苦试验了一个晚上(本来准备好好享受一下刚买的《黑客2》呢!),无奈swing搁置已久,就是没有实现成 ,郁闷啊。我想一定不复杂,就是有一个纸窗户没找到(不然一定桶它个西巴烂,然后爽快地大喊出一声)。
      

  3.   

    joy_wind(wind):
    要会变通一下。现在你的问题就成如何启动表中单元格进入编辑状态了。
    试一下:
    首先捕获单元格聚焦事件,然后调用JTable.editCellAt()方法来启动进入编辑状态。
    捕获单元格聚焦事件,可以是捕获JTable的焦点事件和鼠标事件来完成。
    这样应该可以。
      

  4.   

    我去看看怎么捕获JTable焦点事件吧,他们估计是要用键盘移动光标的。谢谢大家先,还有好的方法继续提,分不够再加。
      

  5.   

    谢谢oboooa的提醒,我试了一下,差不多可以。不过还是不理想:全选的文本没有加亮显示。试验了其他几种方法也不行。下面是试验的代码:public static void main(String[] ss) {
                    JFrame f = new JFrame();
                    JTable t = new JTable(new String[][]{{"adf","sdfg"},{"gdf","hfffa"}},new String[]{"c1","c2"});
                    t.addKeyListener(new KeyAdapter(){ //添加键盘事件,捕捉上下箭头键
                            public void keyReleased(KeyEvent e){
                                  if(e.getKeyCode() == KeyEvent.VK_DOWN ||
                                          e.getKeyCode() == KeyEvent.VK_UP ||
                                          e.getKeyCode() == KeyEvent.VK_LEFT ||
                                          e.getKeyCode() == KeyEvent.VK_RIGHT) {
                                           JTable t = (JTable)e.getSource();
                                          int row,col;
                                          row = t.getSelectedRow();
                                          col = t.getSelectedColumn();
    //下面程序触发开始编辑,然后全选编辑器的文本
                                         t.editCellAt(row,col);
                                       JTextField editor = ((JTextField)t.getCellEditor().getTableCellEditorComponent(t,t.getValueAt(row,col),true,row,col));
                                          editor.selectAll();                              }
                            }
                    });
                    f.getContentPane().setLayout(new BorderLayout());
                    f.getContentPane().add(t,BorderLayout.CENTER);
                    f.show();
            }