RT。

解决方案 »

  1.   

    参照这个例子import javax.swing.*;import java.awt.event.*;
    import java.awt.BorderLayout;
    import java.awt.Dimension;public class JTableTest extends JFrame implements KeyListener { private String[][] tabledata = { { "AAA", "3", "0", "9" },
    { "BBB", "0", "2", "0" }, { "CCC", "1", "2", "1" },
    { "DDD", "2", "2", "0" } }; private String[] columnNames = { "COUNTRY", "WIN", "LOST", "EVEN" }; JTable table = null; int currentRow = -1; int currentCol = -1; public static void main(String[] args) {
    JTableTest test = new JTableTest("JTableTest"); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    test.setVisible(true);
    } JTableTest(String title) {
    setTitle(title);
    setBounds(10, 10, 300, 200); table = new JTable(tabledata, columnNames);
    table.setColumnSelectionAllowed(false);
    table.setRowSelectionAllowed(false);
    table.addKeyListener(this);
    JScrollPane sp = new JScrollPane(table);
    sp.setPreferredSize(new Dimension(250, 100)); JPanel p = new JPanel();
    p.add(sp); getContentPane().add(p, BorderLayout.CENTER);
    } public void keyPressed(KeyEvent e) {
    int col = table.getSelectedColumn();
    int row = table.getSelectedRow();
    System.out.println(table.getValueAt(row, col));
    if (!(col == currentCol && row == currentRow)) {
    table.setValueAt("", row, col);
    } else {
    currentCol = col;
    currentRow = row;
    }
    } public void keyReleased(KeyEvent e) {
    } public void keyTyped(KeyEvent e) {
    }
    }
      

  2.   

    设置editor,在editor里面进行处理。应该是那种默认选中某单元格时,全选里面的文字,编辑的时候就相当于全部清除再录入的情形吧。
      

  3.   

    感谢hq1305018辛苦写代码 可惜这种方法我也做过 达不到我想要的结果 跟excel的也相差太多 比如我按Tab键或者Ctrl键这两个重要的键时候单元格也被清空了 对于编辑数据的时候相当不方便
      

  4.   


    你的想法非常好 我觉得很有道理 可惜我不懂得怎么做 我研究过DefaultCellEditor 可是还是做不出那种效果 如果你知道的话 请你告诉我 谢谢!
      

  5.   

    用这个最新的代码再试试看.import javax.swing.*;import java.awt.event.*;
    import java.awt.BorderLayout;
    import java.awt.Dimension;public class JTableTest extends JFrame implements KeyListener { private String[][] tabledata = { { "AAA", "3", "0", "9" },
    { "BBB", "0", "2", "0" }, { "CCC", "1", "2", "1" },
    { "DDD", "2", "2", "0" } }; private String[] columnNames = { "COUNTRY", "WIN", "LOST", "EVEN" }; JTable table = null; int currentRow = -1; int currentCol = -1; public static void main(String[] args) {
    JTableTest test = new JTableTest("JTableTest"); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    test.setVisible(true);
    } JTableTest(String title) {
    setTitle(title);
    setBounds(10, 10, 300, 200); table = new JTable(tabledata, columnNames);
    table.setColumnSelectionAllowed(false);
    table.setRowSelectionAllowed(false);
    table.addKeyListener(this);
    JScrollPane sp = new JScrollPane(table);
    sp.setPreferredSize(new Dimension(250, 100)); JPanel p = new JPanel();
    p.add(sp); getContentPane().add(p, BorderLayout.CENTER);
    } public void keyPressed(KeyEvent e) { if (e.isAltDown() || e.isControlDown()) // ALT,CONTROL
    return;
    if (e.getKeyCode() == 0 // FN
    || e.getKeyCode() == 9  // TAB
    || e.getKeyCode() == 27 // ESC
    || (e.getKeyCode() >= 112 && e.getKeyCode() <= 123) // F1-F12
    || (e.getKeyCode() >= 16 && e.getKeyCode() <= 18) // ctrl,alt,shift
    || (e.getKeyCode() >= 33 && e.getKeyCode() <= 36) // home,end,PgUp,PgDn
    || (e.getKeyCode() >= 37 && e.getKeyCode() <= 40) // up,down,left,right
    || e.getKeyCode() == 155 // Insert
    || e.getKeyCode() == 9  // Backspace
    || e.getKeyCode() == 145  // Numlk ScrLk
    || e.getKeyCode() == 19  // Pause
    || e.getKeyCode() == 20  // Caps Lock
    || e.getKeyCode() == 29  // language
    || e.getKeyCode() == 10)  // Enter
    return;

    int col = table.getSelectedColumn();
    int row = table.getSelectedRow();
    System.out.println(table.getValueAt(row, col));
    if (!(col == currentCol && row == currentRow)) {
    table.setValueAt("", row, col);
    } else {
    currentCol = col;
    currentRow = row;
    }
    } public void keyReleased(KeyEvent e) {
    } public void keyTyped(KeyEvent e) {
    }
    }
      

  6.   

    to hq1305018:
    这种做法我也试过 过于繁琐 而且也没达到我要的效果 后来我看到一个帖子(http://topic.csdn.net/t/20030827/11/2192632.html)跟我要的效果一样 终于解决了 最近比较忙 没有及时过来看 谢谢你们的帮忙!