用ve作的连接数据库程序,数据库为oracle9i scott|tiger 查询表为emp,jdk6.0,eclipse3.3。用jtable输出查询结果,设置表为可更新结果集,查询语句为SELECT emp.* FROM emp WHERE empno >=? 。表可以更新,但需要最大化一次才能显示出更新后的结果集。问题在哪里?用ve时,程序javabeans中的表和ScrollPane的图标带叉,但可以运行,应如何修改?感谢回帖import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;import java.awt.Dimension;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;public class testo extends JFrame { private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JTextField jTextField = null;
private ResultSet rs;
   private Connection conn;
   private Statement stat;
   private ResultSetTableModel model;
   private PreparedStatement authorQueryStmt;
   private int name; /**
 * This is the default constructor
 */
public testo() {
super();
initialize();
} /**
 * This method initializes this
 * 
 * @return void
 */
private void initialize() {
this.setSize(503, 280);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
} /**
 * This method initializes jContentPane
 * 
 * @return javax.swing.JPanel
 */
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJTextField(), BorderLayout.NORTH);
}
return jContentPane;
} /**
 * This method initializes jTextField
 * 
 * @return javax.swing.JTextField
 */
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
jTextField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
action();
}
});
}
return jTextField;
} public void action()
{
        try
        {  conn = getConnection();
        authorQueryStmt = conn.prepareStatement("SELECT emp.* FROM emp WHERE empno >=? ",ResultSet.TYPE_SCROLL_SENSITIVE,            
                   ResultSet.CONCUR_UPDATABLE);
       name=Integer.parseInt(jTextField.getText());
    authorQueryStmt.setString(1, Integer.toString(name));
    rs = authorQueryStmt.executeQuery();
           model = new ResultSetTableModel(rs);
           
   JTable jTable = new JTable();
   jTable.setModel(model);    JScrollPane jScrollPane = new JScrollPane(jTable);
jContentPane.add(jScrollPane, BorderLayout.CENTER);
            validate();                      
           
                                 }            
        catch (SQLException e)
        {  
           e.printStackTrace();
        }
        catch (IOException e) 
        {
         e.printStackTrace();
}
}

   public static Connection getConnection()
      throws SQLException, IOException
   {  
      Properties props = new Properties();
      FileInputStream in = new FileInputStream("database.properties");
      props.load(in);
      in.close();       String drivers = props.getProperty("jdbc.drivers");
      if (drivers != null) System.setProperty("jdbc.drivers", drivers);
      String url = props.getProperty("jdbc.url");
      String username = props.getProperty("jdbc.username");
      String password = props.getProperty("jdbc.password");       return DriverManager.getConnection(url, username, password);
   }}  //  @jve:decl-index=0:visual-constraint="10,10"
class ResultSetTableModel extends AbstractTableModel
{  
   /**
      Constructs the table model.
      @param aResultSet the result set to display.
   */
   public ResultSetTableModel(ResultSet aResultSet)
   {  
      rs = aResultSet;
      try
      {  
         rsmd = rs.getMetaData();
      }
      catch (SQLException e)
      {  
         e.printStackTrace();
      }
   }   public String getColumnName(int c)
   {  
      try
      {  
         return rsmd.getColumnName(c + 1);
      }
      catch (SQLException e)
      {  
         e.printStackTrace();
         return "";
      }
   }   public int getColumnCount()
   {  
      try
      {  
         return rsmd.getColumnCount();
      }
      catch (SQLException e)
      {  
         e.printStackTrace();
         return 0;
      }
   }   public Object getValueAt(int r, int c)
   {  
      try
      {  
         rs.absolute(r + 1);
         return rs.getObject(c + 1);
      }
      catch(SQLException e)
      {  
         e.printStackTrace();
         return null;
      }
   }   public int getRowCount()
   {  
      try
      {  
         rs.last();
         return rs.getRow();
      }
      catch(SQLException e)
      {  
         e.printStackTrace();
         return 0;
      }
   }   private ResultSet rs;
   private ResultSetMetaData rsmd;
}