在java中创建了jtable,怎么获取这个表中某行某列的数据(即某单元格的数据int值)??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在java中创建了jtable,怎么获取这个表中某行某列的数据(即某单元格的数据int值)??相关的知识,希望对你有一定的参考价值。

我的程序是这样的:
JScrollPane BP=new JScrollPane(); Vector M_column=new Vector();
M_column.add("实页号");M_column.add("占用位");M_column.add("程序号");
M_column.add("段页号");M_column.add("使用位");M_column.add("程序优先位"); M_column.add("H");
Vector M_data=new Vector();
for(int i=0;i<5;i++)

Vector M_rowdata=new Vector();
M_rowdata.add(String.valueOf(i));//实页号
M_rowdata.add("1");//占用位

M_model=new DefaultTableModel(M_data,M_column);//创建指定表格模型的表格
JTable M_table=new JTable(M_model);

BP.setViewportView(M_table);
Container c=getContentPane();//创建窗n口
c.add(BP);
.......................后面的是想获取表中某行某列的数据int值

参考技术A 通过取vector取得。。。。追问

我知道了是用defaulttablemodel的getValueAt方法

本回答被提问者采纳

如何使用数组方法通过RMI从数据库的表中获取完整的数据?

【中文标题】如何使用数组方法通过RMI从数据库的表中获取完整的数据?【英文标题】:How to fetch complete data from the database's table through RMI using the array method? 【发布时间】:2022-01-02 13:28:34 【问题描述】:

我想通过 RMI 从数据库的表中获取完整的数据。我在 Java 接口中使用了数组方法,并在实现类中实现了该方法。我的意图是通过实现获取数组中的数据,并在客户端通过JTable 显示它。我在数据库中创建了一个单列表。我必须将整个数据从该表获取到客户端。

我附上了我所做的编码。 我已经在我得到的代码部分注释了错误。

界面

public interface Interface extends Remote 
     public static String[] getArray() throws Remote Exception; // Here it shows missing method 
                                                               //  body or declare abstract

实施

public class TheImplementation extends UnicastRemoteObject implements Interface
    
    public TheImplementation()throws Remote Exception
        super();
    
    
    private static final long serialVersionUID = -3763231206310559L;
    
    Connection con;
    PreparedStatement pst;
    ResultSet rst;

    public static String[] getArray() throws RemoteException
        String fruitdetails = null; 
        try 
            Connection connection=ConnectionProvider.getConnection();
            Statement st=connection.createStatement();
            ResultSet rs=st.executeQuery("select *from details");
            while(rs.next())  
                fruitdetails= rs.getString("fruit");
                String tbData[]=fruitdetails;
            
        
        catch (SQLException e) 
            JOptionPane.showMessageDialog(null, e);
        
        return tbData;// Here it shows error. Cannot find symbol.
                           // I tried to declare array at top. But, It didn't work.
    

【问题讨论】:

tbData 是在 while 循环中声明的,所以它的作用域只在 while 循环内。当你编译它时,你的 sql 会抛出一个错误。其他 Interface 不是 Java 对象的好名字。 con pstrst 已声明但从未使用过。为什么将getArray 作为static 方法,为什么还要麻烦接口它? 连接、语句和结果集永远不会关闭。 JOptionPane 用于服务器端显示错误消息。 参考Java doc for Scope of variables 【参考方案1】:

remote interfaces中的抽象方法不能是静态的,所以需要将接口定义改成如下。

public interface Interface extends java.rmi.Remote 
    public String[] getArray() throws RemoteException;

远程方法返回的值必须是serializable。 java中的数组是可序列化的,但是数组具有固定的大小,并且由于您正在返回数据库查询的结果,因此您无法知道大小。因此我建议getArray 方法返回一个ArrayList 或更好的CachedRowSet。

public interface Interface extends Remote 
    public CachedRowSet getArray() throws RemoteException;

由于类TheImplementation 是您的RMI 服务器类,因此最好使用log 异常而不是显示JOptionPane,并且您应该始终记录stack trace。请注意,远程方法必须声明它们抛出RemoteException,以便通知RMI 客户端远程方法失败。因此,除了记录异常之外,方法getArray 还可以抛出RemoteException

以下代码演示。

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.sql.rowset.CachedRowSet;
import javax.sql.rowset.RowSetFactory;
import javax.sql.rowset.RowSetProvider;

public class TheImplementation extends UnicastRemoteObject implements Interface 

    public TheImplementation() throws RemoteException 
        super();
    

    private static final long serialVersionUID = -3763231206310559L;

    public CachedRowSet getArray() throws RemoteException 
        try (Connection con = ConnectionProvider.getConnection();
             Statement st = con.createStatement();
             ResultSet rs = st.executeQuery("select * from details")) 
            RowSetFactory factory = RowSetProvider.newFactory();
            CachedRowSet fruitDetails = factory.createCachedRowSet();
            fruitDetails.populate(rs);
            return fruitDetails;
        
        catch (SQLException e) 
            throw new RemoteException("Method 'getArray()' failed.", e);
        
    

请注意,上面的代码还使用了try-with-resources来确保ResultSetStatementConnection都是关闭的。

【讨论】:

以上是关于在java中创建了jtable,怎么获取这个表中某行某列的数据(即某单元格的数据int值)??的主要内容,如果未能解决你的问题,请参考以下文章

从java程序中向oracle中插入数据,为啥插入顺序总是不对

在 swing 中创建运行时 jtable

JTable里怎么得到修改后单元格里的值

如何在JTable Invisible for Swing Java中创建一个列

Java 鼠标获取 JTable 位置的移动

JAVA中从Mysql取数据到JTable