总是不显示更新 应该怎么修改一下 我想定时更新数据 但现在测试用按钮都无法更新 不知道是不是getValueAt方法不对 高手帮忙看下 代码如下
//链接数据取得数据
import java.sql.*;
import java.util.ArrayList;
import java.util.Vector;
public class sqlTest {
Connection conn;
Statement stmt;
ResultSet res;
Vector vi=new Vector();
ArrayList sy=new ArrayList();
public Vector mai(){
Connection conn;
Statement stmt;
ResultSet res;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
//建立到MySQL的连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/center",
"root", "123456");
stmt=conn.createStatement();
System.out.print("链接成功");
res=stmt.executeQuery("select * from info_test");
System.out.print("开始执行");
ResultSetMetaData rsm = res.getMetaData();
int count=rsm .getColumnCount();
while(res.next()){
//System.out.print(res.getRow());
//for(int i=0;i<count;i++){
String name=res.getString("name");
String ip=res.getString("id");
//while(res.next()){
//System.out.print(res.getString("doller"));
//}
//vi1.clear();
//}
//System.out.print(vi.size());
this.addrow(name, ip);
}
//System.out.print(sy.size());
System.out.print(vi.size());
return vi;
}catch(Exception e){
System.out.print("数据库错误");
return null;
}
}
public void addrow(String name,String id){
Vector vi1=new Vector();
vi1.clear();
vi1.add(name);
vi1.add(id);
vi.add(vi1);
}
}//jtable数据模型
import java.text.NumberFormat;
import java.util.Vector;import javax.swing.*;
import javax.swing.table.AbstractTableModel;public class testMobel extends AbstractTableModel { //@Override
Vector v=new Vector();
Vector vs=new Vector();
sqlTest sql=new sqlTest();
String[] hsa={"name","ip"};
public testMobel(){ v=sql.mai();
}
public int getColumnCount() {
// TODO Auto-generated method stub
return hsa.length;
}
public String getColumnName(int c) {
// TODO Auto-generated method stub
return hsa[c].toString();
} @Override
public int getRowCount() {
// TODO Auto-generated method stub
return v.size();
} @Override
public Object getValueAt(int row, int coml) {
// TODO Auto-generated method stub
return ((Vector) v.get(row)).get(coml);
}}//主程序窗体
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.LayoutStyle;
public class tableTestFream extends JFrame { private JTable table;
/**
* Launch the application
* @param args
*/
public static void main(String args[]) {
try {
tableTestFream frame = new tableTestFream();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* Create the frame
*/
public tableTestFream() {
super();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
sqlTest sql=new sqlTest();
JScrollPane scrollPane;
scrollPane = new JScrollPane();
testMobel date=new testMobel();
JButton button;
button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent arg0) {
table.validate();
table.updateUI();
}
});
table = new JTable(date);
scrollPane.setViewportView(table);
button.setText("New JButton");
final GroupLayout groupLayout = new GroupLayout((JComponent) getContentPane());
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGap(32, 32, 32)
.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 437, GroupLayout.PREFERRED_SIZE))
.addGroup(groupLayout.createSequentialGroup()
.addGap(195, 195, 195)
.addComponent(button)))
.addContainerGap(32, Short.MAX_VALUE))
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addContainerGap()
.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 364, GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(button)
.addContainerGap(32, Short.MAX_VALUE))
);
getContentPane().setLayout(groupLayout);
pack();
//
}}
//链接数据取得数据
import java.sql.*;
import java.util.ArrayList;
import java.util.Vector;
public class sqlTest {
Connection conn;
Statement stmt;
ResultSet res;
Vector vi=new Vector();
ArrayList sy=new ArrayList();
public Vector mai(){
Connection conn;
Statement stmt;
ResultSet res;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
//建立到MySQL的连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/center",
"root", "123456");
stmt=conn.createStatement();
System.out.print("链接成功");
res=stmt.executeQuery("select * from info_test");
System.out.print("开始执行");
ResultSetMetaData rsm = res.getMetaData();
int count=rsm .getColumnCount();
while(res.next()){
//System.out.print(res.getRow());
//for(int i=0;i<count;i++){
String name=res.getString("name");
String ip=res.getString("id");
//while(res.next()){
//System.out.print(res.getString("doller"));
//}
//vi1.clear();
//}
//System.out.print(vi.size());
this.addrow(name, ip);
}
//System.out.print(sy.size());
System.out.print(vi.size());
return vi;
}catch(Exception e){
System.out.print("数据库错误");
return null;
}
}
public void addrow(String name,String id){
Vector vi1=new Vector();
vi1.clear();
vi1.add(name);
vi1.add(id);
vi.add(vi1);
}
}//jtable数据模型
import java.text.NumberFormat;
import java.util.Vector;import javax.swing.*;
import javax.swing.table.AbstractTableModel;public class testMobel extends AbstractTableModel { //@Override
Vector v=new Vector();
Vector vs=new Vector();
sqlTest sql=new sqlTest();
String[] hsa={"name","ip"};
public testMobel(){ v=sql.mai();
}
public int getColumnCount() {
// TODO Auto-generated method stub
return hsa.length;
}
public String getColumnName(int c) {
// TODO Auto-generated method stub
return hsa[c].toString();
} @Override
public int getRowCount() {
// TODO Auto-generated method stub
return v.size();
} @Override
public Object getValueAt(int row, int coml) {
// TODO Auto-generated method stub
return ((Vector) v.get(row)).get(coml);
}}//主程序窗体
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.LayoutStyle;
public class tableTestFream extends JFrame { private JTable table;
/**
* Launch the application
* @param args
*/
public static void main(String args[]) {
try {
tableTestFream frame = new tableTestFream();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* Create the frame
*/
public tableTestFream() {
super();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
sqlTest sql=new sqlTest();
JScrollPane scrollPane;
scrollPane = new JScrollPane();
testMobel date=new testMobel();
JButton button;
button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent arg0) {
table.validate();
table.updateUI();
}
});
table = new JTable(date);
scrollPane.setViewportView(table);
button.setText("New JButton");
final GroupLayout groupLayout = new GroupLayout((JComponent) getContentPane());
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGap(32, 32, 32)
.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 437, GroupLayout.PREFERRED_SIZE))
.addGroup(groupLayout.createSequentialGroup()
.addGap(195, 195, 195)
.addComponent(button)))
.addContainerGap(32, Short.MAX_VALUE))
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addContainerGap()
.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 364, GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(button)
.addContainerGap(32, Short.MAX_VALUE))
);
getContentPane().setLayout(groupLayout);
pack();
//
}}
这个也不行,高手帮帮忙。
table.validate();
table.updateUI();
换为:
table.setModel(new testMobel());
试试。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Vector;import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.LayoutStyle;
import javax.swing.table.DefaultTableModel;
import javax.swing.Timer;
public class tableTestFream extends JFrame { public JTable table;
private Timer timer = null;
String[] hsa={"name","ip"};
Vector srcdata=new Vector();
sqlTest sql=new sqlTest();
/**
* Launch the application
* @param args
*/
public static void main(String args[]) {
try {
tableTestFream frame = new tableTestFream();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* Create the frame
*/
public tableTestFream() {
super();
final Vector cname=new Vector(2);
timer = new Timer(300,updateTableAction);
timer.start();
cname.add(hsa[0]);
cname.add(hsa[1]);
final JTable table=new JTable();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
JScrollPane scrollPane;
scrollPane = new JScrollPane();
//testMobel date=new testMobel(sql.mai());
//srcdata=sql.mai();
//DefaultTableModel model=new DefaultTableModel(srcdata,cname);
//table.setModel(model);
//table = new JTable(date);
table.setModel(new testMobel(sql.mai()));
JButton button;
button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent arg0) {
table.setModel(new testMobel(sql.mai()));
//((DefaultTableModel)table.getModel()).setDataVector(srcdata,cname);
}
});
//((DefaultTableModel)table.getModel()).setDataVector(srcdata,cname);
scrollPane.setViewportView(table);
button.setText("New JButton");
final GroupLayout groupLayout = new GroupLayout((JComponent) getContentPane());
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGap(32, 32, 32)
.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 437, GroupLayout.PREFERRED_SIZE))
.addGroup(groupLayout.createSequentialGroup()
.addGap(195, 195, 195)
.addComponent(button)))
.addContainerGap(32, Short.MAX_VALUE))
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addContainerGap()
.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 364, GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(button)
.addContainerGap(32, Short.MAX_VALUE))
);
getContentPane().setLayout(groupLayout);
pack();
//
}
private Action updateTableAction = new AbstractAction(){ public void actionPerformed(ActionEvent e){
table.setModel(new testMobel(sql.mai()));//这句有问题
}
};
}
at tableTestFream$1.actionPerformed(tableTestFream.java:114)
at javax.swing.Timer.fireActionPerformed(Unknown Source)
at javax.swing.Timer$DoPostEvent.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)