Sử dụng RMI hiển thị dữ liệu từ mysql lên JTable

mình có bài tập về việc sử dụng RMI , mysql để đăng nhập và hiển thị dữ liệu lên JTable, việc đăng nhập thì mình làm được rồi , còn chỗ hiển thị lên JTable thì mình làm mãi vẫn vướng ko dõ lỗi chỗ nào, theo mình hiểu thì bên server mình viết 1 hàm trả về kq là 1 kiểu Jtable còn bên client mình sẽ gọi phương thức đó và gán cho cái Jtable hiện tại của mình, nhưng kết quả ko ra . khi mình chuyển hàm show sang client thì vẫn show lên jtable bình thường.
thứ 2 mình phải nộp bài rồi , ai chỉ mình vs ạ
đây là code server

 public JTable show(DefaultTableModel tm) throws RemoteException{
        JTable tb= null;
        try{
        Connection conn = Getconnection.getConnect();
        PreparedStatement ps = conn.prepareStatement("select * from information");
        ResultSet rs = ps.executeQuery();
        tm = (DefaultTableModel) tb.getModel();
        while(rs.next()){
            Object os[]={rs.getString("username"),rs.getString("decivename"),rs.getString("addressIP")};
             tm.addRow(os);
        }
        }
        catch(Exception ex){
            JOptionPane.showMessageDialog(null,"Loi"+ex.getMessage());
        }
        
    return tb;
    }


try{
           Registry reg = LocateRegistry.createRegistry(1997);
           reg.bind("quanlyIP", new Server());
           System.out.println("Server khởi tạo thành công");
           
       }
       catch(Exception ex){
       System.out.println("Server Lỗi"+ex.getMessage());
       }

còn đây là code bên client

  try{
           reg = LocateRegistry.getRegistry("localhost",1997);
           xl = (xuly) reg.lookup("quanlyIP");
           tb_showIP = xl.show(dlm);
       }
       catch(Exception ex){
       JOptionPane.showMessageDialog(null,""+ex.getMessage());
       }

help me !!!

Bạn viết cái quái gì thế?

JTable tb= null; khai báo bằng rỗng.
tm = (DefaultTableModel) tb.getModel(); không khởi tạo cho tb mà gọi phương thức của nó, không bị NullPointerException à?
return tb; kết quả là trả về một đối tượng chưa được khởi tạo.
Đồng thời: tham số DefaultTableModel tm để làm gì thế? Quá vô nghĩa!

tb_showIP = xl.show(dlm); thay giá trị của trường là giao diện thay theo à!?


Bên client bạn đã có cái bảng rồi, việc cần làm là lấy DefaultTableModel mà gán cho nó thôi.

  • Trong show() chỉ cần tạo (new) ra đối tượng DefaultTableModel rồi đổ các giá trị vừa truy vấn vào rồi trả về nó.
  • Bên client dùng phương thức JTable.setModel() để gán dữ liệu cho bảng.
4 Likes

cảm ơn bạn , mình làm dk rồi, vì kiến thức này mình ko học mà có bài tập nên ms như thế

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?