怎样更新jTable中的数据?请教各位大虾我在jTable中的一行中的一个单元格中输入了新的数据后,必须用鼠标单击另一个单元格或是其它行后,此输入的数据才被系统认为已经更新成功。我想能不能在我每次输入数据的时候,数据就自动更新,不需要单击其它地方了。 谢谢了!!

解决方案 »

  1.   

    我想输入完后就直接点击一个按钮,该按钮的功能和我输入完后按ENTER键的功能一样,请问该怎么实现
      

  2.   

    写在回车键的事件里面吧。或者使用JDBTABLE,它可能可以在光标移到另一行的时候自动保(我没试过,以前用BCB的DBTABLE是这样的)
      

  3.   

    “我想输入完后就直接点击一个按钮,这个按钮的功能和我输入完后直接按ENTER键的功能一样。”也就是说这个按钮内的函数的功能是使我刚才输入的那个tablecell内的数据直接更新。这样我就不用按ENTER键或点击表中的其它行进行数据更新了。
      

  4.   

    // table.updateUI();
    // table.updateUI();import java.awt.Component;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.util.ArrayList;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPopupMenu;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.SpringLayout;
    import javax.swing.table.AbstractTableModel;public class JTableTest extends JFrame
    {
    class TableTableModel extends AbstractTableModel
    {
    public final String[] COLUMN_NAMES = new String[] { "繁体", "简体" }; private ArrayList rows=new ArrayList(); public int getRowCount()
    {
    return rows.size();
    } public int getColumnCount()
    {
    return COLUMN_NAMES.length;
    } public String getColumnName(int columnIndex)
    {
    return COLUMN_NAMES[columnIndex];
    } public Object getValueAt(int rowIndex, int columnIndex)
    {
    return ((String[]) rows.get(rowIndex))[columnIndex];
    } public void addRow(String[] row)
    {
    rows.add(row);
    } public boolean isCellEditable(int rowIndex, int columnIndex)
    {
    // TODO 自动生成方法存根
    return super.isCellEditable(rowIndex, columnIndex);
    }
    } private JTable table; private SpringLayout springLayout; private TableTableModel tableTableModel; /**
     * Launch the application
     * 
     * @param args
     */
    public static void main(String args[])
    {
    try
    {
    JTableTest frame = new JTableTest();
    frame.setVisible(true);
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    } /**
     * Create the frame
     */
    public JTableTest()
    {
    super();
    springLayout = new SpringLayout();
    getContentPane().setLayout(springLayout);
    setBounds(100, 100, 500, 375);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    final JScrollPane scrollPane = new JScrollPane();
    getContentPane().add(scrollPane);
    springLayout.putConstraint(SpringLayout.SOUTH, scrollPane, -5, SpringLayout.SOUTH, getContentPane());
    springLayout.putConstraint(SpringLayout.EAST, scrollPane, -5, SpringLayout.EAST, getContentPane());
    springLayout.putConstraint(SpringLayout.NORTH, scrollPane, 5, SpringLayout.NORTH, getContentPane());
    springLayout.putConstraint(SpringLayout.WEST, scrollPane, 5, SpringLayout.WEST, getContentPane());
    table = new JTable();
    tableTableModel = new TableTableModel();
    table.setModel(tableTableModel);
    scrollPane.setViewportView(table); final JMenuBar menuBar = new JMenuBar();
    setJMenuBar(menuBar); final JMenu fileMenu = new JMenu();
    fileMenu.setText("File");
    menuBar.add(fileMenu); final JMenuItem addMenuItem = new JMenuItem();
    addMenuItem.addMouseListener(new MouseAdapter() {
    public void mousePressed(MouseEvent e)
    {
    for (int i = 0; i < 10; i++)
    {
    tableTableModel.addRow(new String[] { "Row" + i, "Row" + i });
    }
    table.updateUI();
    }
    });
    addMenuItem.setText("ADD");
    fileMenu.add(addMenuItem);
    //
    } private static void addPopup(Component component, final JPopupMenu popup)
    {
    component.addMouseListener(new MouseAdapter()
    {
    public void mousePressed(MouseEvent e)
    {
    if (e.isPopupTrigger())
    showMenu(e);
    } public void mouseReleased(MouseEvent e)
    {
    if (e.isPopupTrigger())
    showMenu(e);
    } private void showMenu(MouseEvent e)
    {
    popup.show(e.getComponent(), e.getX(), e.getY());
    }
    });
    }
    }
      

  5.   

    那你就把SQL语句写在按键里,然后使用
    fireTableStructureChanged();
    刷新TABLE中的内容就可以了呀。
      

  6.   

    在你的按钮相应事件的里调用如下的代码让table转移焦点:
    table.transferFocus()
      

  7.   

    该问题我已经自己解决了。解决办法:重写bstractCellEditor类的stopCellEditing()方法就可以了,还是要感谢大家的帮忙哈! ^-^