怎样更新jTable中的数据……………………!!谢谢 怎样更新jTable中的数据?请教各位大虾我在jTable中的一行中的一个单元格中输入了新的数据后,必须用鼠标单击另一个单元格或是其它行后,此输入的数据才被系统认为已经更新成功。我想能不能在我每次输入数据的时候,数据就自动更新,不需要单击其它地方了。 谢谢了!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我想输入完后就直接点击一个按钮,该按钮的功能和我输入完后按ENTER键的功能一样,请问该怎么实现 写在回车键的事件里面吧。或者使用JDBTABLE,它可能可以在光标移到另一行的时候自动保(我没试过,以前用BCB的DBTABLE是这样的) “我想输入完后就直接点击一个按钮,这个按钮的功能和我输入完后直接按ENTER键的功能一样。”也就是说这个按钮内的函数的功能是使我刚才输入的那个tablecell内的数据直接更新。这样我就不用按ENTER键或点击表中的其它行进行数据更新了。 // 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()); } }); }} 那你就把SQL语句写在按键里,然后使用fireTableStructureChanged();刷新TABLE中的内容就可以了呀。 在你的按钮相应事件的里调用如下的代码让table转移焦点:table.transferFocus() 该问题我已经自己解决了。解决办法:重写bstractCellEditor类的stopCellEditing()方法就可以了,还是要感谢大家的帮忙哈! ^-^ 关于修饰符的问题 PreparedStatement 的 executeUpdate 问题 题目讨论 我想在网页中加入上传文件的功能,并对文件进行处理,应该使用哪个API啊?或者应该从何处着手学习? StringBuffer java.lang.OutOfMemoryError的问题 关于Java中JTableModel的几个问题 请教高手 float类型科学计数转换的问题 关于java包 java 与sql server的连接2 我是一个初学者,我很想学JAVA,请教:!!! properties的问题
// 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());
}
});
}
}
fireTableStructureChanged();
刷新TABLE中的内容就可以了呀。
table.transferFocus()