Cách xóa dữ liệu hiển thị trên Jtable và hiển thị dữ liệu tìm được lên Jtable?

Chào mọi người.Em đang làm java swing và đang làm chức năng tìm kiếm.Em đang không biết làm sao xóa đi dữ liệu trên bảng để hiển thị dữ liệu tìm được lên bảng.Em có tạo một cái model mới để lưu dữ liệu tìm được nhưng làm sao để xóa đi cái dữ liệu cũ trên bảng vậy ạ?

 DefaultTableModel model1 = (DefaultTableModel)jTable1.getModel();
       for(int i = 0; i <= listStudent.size(); i++){
           if((listPlace.get(i).getName()).equals(inputBirthPlace.getText())){

                model1.addRow(new Object[]{
                i+1, listStudent.get(i).getId(), listStudent.get(i).getName(), listPlace.get(i).getName()
                        , listStudent.get(i).getDate(), listStudent.get(i).getMath(), listStudent.get(i).getPhysical()
                        , listStudent.get(i).getChemistry()
                });
                
                
           }

là sao nhỉ? dữ liệu tìm được trên bảng nào? trong database hay sao? :v

2 Likes

dạ không của em chưa có kết nối csdl . Ý em là khi em nhập 3 sinh viên vào cái list rồi hiển thị lên bảng thì em muốn tìm sinh viên mà có quê quán trùng với quê quán em nhập ở textfile.Em muốn là làm sao để xóa đi được thông tin 3 sinh viên kia ở trên bảng và chỉ hiển thị thông tin sinh viên tìm được thôi ạ

Giống bài này nhỉ:

1 Like

Nhớ lại kì trước cũng làm Java Swing, khổ thật sự :v Thắc mắc sao bạn không làm giao diện trên web hoặc làm Winform, Java-fx

1 Like

làm sao để xóa được dữ liệu hiển thị ở bảng gốc vậy ạ?

thầy yêu cầu như vậy ạ :smile:

Em đang bị lỗi như này ạ.Ví dụ như em nhập 4 sinh viên vào với birthplace = tb, tb, hn, hn và id = 1,2,3,4.Thì khi em nhập vào ô tìm kiếm birthplace là “tb” thì nó tìm được và hiển thị đúng nhưng sau đó em tìm tiếp là “hn” thì nó lại không hiển thị gì lên.Em nhập id thì tìm kiếm ngon lành không bị lỗi gì cả.Em có xóa dòng else if tìm kiếm id đi thì cái birthplace của em tìm kiếm lại ngon.Cho em hỏi sao lại lỗi ở chỗ else if kia vậy ạ?

private void filtreActionPerformed(java.awt.event.ActionEvent evt) {                                       
    // TODO add your handling code here:
   DefaultTableModel model1 = new DefaultTableModel();
   for(int i = 0; i < listStudent.size(); i++){
       if((listPlace.get(i).getName()).equals(inputBirthPlace.getText())){
           showResultAfterSearch(i, model1); 
         
       }
       
       else if((listStudent.get(i).getId())==(Integer.parseInt(inputStudentID.getText()))){
           showResultAfterSearch(i, model1);
           
       }
       jTable1.setModel(model1);
       jTable1.getModel();
     
   }
 
}

Em đang bị lỗi như này ạ.Ví dụ như em nhập 4 sinh viên vào với birthplace = tb, tb, hn, hn và id = 1,2,3,4.Thì khi em nhập vào ô tìm kiếm birthplace là “tb” thì nó tìm được và hiển thị đúng nhưng sau đó em tìm tiếp là “hn” thì nó lại không hiển thị gì lên.Em nhập id thì tìm kiếm ngon lành không bị lỗi gì cả.Em có xóa dòng else if tìm kiếm id đi thì cái birthplace của em tìm kiếm lại ngon.Cho em hỏi sao lại lỗi ở chỗ else if kia vậy ạ?

Tớ diễn đạt lại ý của cậu, hi vọng cậu học lại được cách diễn đạt. Những đoạn in nghiêng là phần comment của tớ muốn nói với cậu.

Đầu tiên, cậu cần đưa ra context - ngữ cảnh của vấn đề.
Em có listStudent (chứa thông tin ID của từng sinh viên, bao gồm các record {1, 2, 3, 4}) và listPlace (chứa thông tin birthplace của từng sinh viên, bao gồm các record {tb, tb, hn, hn}).
Trên giao diện, em có 2 ô tìm kiếm:

  • Ô tìm kiếm bằng student ID (biến inputStudentID)
  • Ô tìm kiếm bằng birthplace (biến inputBirthPlace)

Khi cậu đưa ra đoạn code, cậu nên giải thích đoạn code đó 1 chút. Thường thì nếu code của cậu tốt, bọn tớ sẽ hiểu ngay mà không cần thêm giải thích gì, nhưng trong trường hợp của cậu, code của cậu rất tệ.
Dưới đây làm hàm thực hiện sự kiện (hình như là ấn nut search) sau khi em nhập vào 2 ô tìm kiếm trên (Tớ có put 1 số comment vào code của cậu, cậu có thể cân nhắc tự trả lời :smiley: Nếu cậu không trả lời được, tớ nghĩ là cậu chưa hiểu cậu đang làm gì đâu):

private void filtreActionPerformed(java.awt.event.ActionEvent evt) {                                       
    // TODO add your handling code here: 
    //===> Cậu nên bỏ dòng TODO vô dụng ở trên
   DefaultTableModel model1 = new DefaultTableModel(); // ===> Tại sao biến này tên là `model 1`? Tại sao không chỉ là `tableModel` hay `model`?
   for(int i = 0; i < listStudent.size(); i++){
       if((listPlace.get(i).getName()).equals(inputBirthPlace.getText())){
           showResultAfterSearch(i, model1); 
           // Tại sao cậu lại gửi model 1 mới được tạo ra vào đây? Cậu đang cố chỉnh sửa model 1 trong hàm showResultAfterSearch phải không?
       }
       
       else if((listStudent.get(i).getId())==(Integer.parseInt(inputStudentID.getText()))){
           showResultAfterSearch(i, model1);
         // Khi cậu tìm thấy kết quả rồi, tại sao không dừng lại luôn mà lại tiếp tục vòng lặp tiếp theo?
       }
       jTable1.setModel(model1); // Tại sao cậu lại set lại model trong từng vòng lặp?
       // Sao cậu không set lại model ở ngoài vòng lặp, vì về lý thuyết, nó chỉ cần set 1 lần thôi?

       jTable1.getModel(); // Tại sao cậu lại cần getModel ở đây?
     
   }
 
}

Rồi, sau khi đưa ra background, giờ là lúc cậu đưa ra vấn đề của cậu. Cậu nên liệt kê nó theo framework: input (làm thế nào cậu tái hiện lại vấn đề của cậu?) - expectation output (cậu kỳ vọng kết quả gì?) - actual output (kết quả thực tế như thế nào). Framework đó khá cơ bản, và nó sẽ giúp mọi người hiểu ngay vấn đề của cậu._
Em gặp vấn đề sau đây:

  • Khi nhập tìm kiếm birthplace với giá trị “tb”, kết quả trả về là {1, tb}, {2, tb} đúng với kỳ vọng.
  • Khi nhập tìm kiếm birthplace với giá trị “hn”, kết quả trả về là {} (kỳ vọng là {3, hn}, {4, hn})
  • Khi nhập tìm kiếm id với giá trị “1”, kết quả trả về là {1, tb} đúng với kỳ vọng.
  • Khi em xoá khối else if đi, và tìm kiếm birthplace với giá trị “hn”, kết quả trả về là {3, hn}, {4, hn} đúng với kỳ vọng.

Mọi người có thể giúp em giải thích tại sao behavior lại như vậy? (Tại sao cậu chưa thử debug hay in giá trị ra trên IDE của cậu, mà muốn mọi người giải thích giúp cậu?)


Tớ hi vọng cậu, hoặc ai đó đọc được bài này có chung vấn đề với cậu, học được thêm gì về cách diễn đạt vấn đề. Tớ không biết cậu có học vấn thế nào, nhưng nếu cậu không cải thiện được cách diễn đạt vấn đề tử tế, cậu sẽ không nhận được nhiều sự trợ giúp đâu.

Còn về vấn đề code java của cậu, sao cậu không thử tự debug, in ra giá trị để xác nhận nhỉ? Cậu có IDE, full source code rồi mà :slight_smile: Tớ e là tớ không thể đưa ra bất cứ thông tin gì khi không có full source code được.

Hi vọng nó sẽ giúp cậu.

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