Tôi muốn xóa một số hàng khỏi JTable. Tôi làm nó như thế nào?Làm thế nào để loại bỏ một hàng khỏi JTable?
Trả lời
Một JTable thường tạo thành phần Xem của triển khai MVC. Bạn sẽ muốn xóa các hàng khỏi mô hình của mình. JTable nên lắng nghe những thay đổi này, sẽ cập nhật để phản ánh việc xóa này. Do đó bạn sẽ không tìm thấy removeRow() hoặc tương tự như một phương thức trên JTable.
thanx để được trợ giúp, nhưng tôi muốn biết cách xóa hàng khỏi mô hình bảng, im không nhận được bất kỳ phương thức nào. –
Đọc qua những thứ như: http://java.sun.com/docs/books/tutorial/uiswing/components/table.html – dave
Tóm lại, bạn tạo một TableModel tùy chỉnh. JTable không lưu trữ các hàng, nó ủy nhiệm cho một TableModel. Bạn có thể phân lớp từ AbstractTableModel nếu bạn muốn. Gọi fireTableRowsDeleted() mỗi khi bạn xóa các hàng. – dave
Nhìn vào DefaultTableModel cho một mô hình đơn giản mà bạn có thể sử dụng:
http://java.sun.com/javase/6/docs/api/javax/swing/table/DefaultTableModel.html
này kéo dài AbstractTableModel, nhưng nên là đủ cho mục đích cơ bản. Bạn luôn có thể mở rộng AbstractTableModel và tạo của riêng bạn. Hãy chắc chắn rằng bạn đặt nó trên JTable là tốt.
http://java.sun.com/javase/6/docs/api/javax/swing/table/AbstractTableModel.html
Nhìn vào hướng dẫn cơ bản Sun cho biết thêm thông tin về cách sử dụng JTable với mô hình bảng:
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#data
Để loại bỏ một hàng từ một JTable, bạn cần phải loại bỏ hàng mục tiêu từ phần cơ bản TableModel. Nếu, ví dụ, TableModel của bạn là một thể hiện của DefaultTableModel, bạn có thể loại bỏ một hàng bằng cách làm như sau:
((DefaultTableModel)myJTable.getModel()).removeRow(rowToRemove);
thanx để được trợ giúp, nhưng tôi đã sử dụng phương pháp này và nó không hoạt động. thực tế JTable của tôi đang sử dụng mô hình LocationTable (tạo riêng) extendind mô hình bảng trừu tượng vì vậy khi tôi đang sử dụng phương thức removeRow (i), nó sẽ đưa ra lỗi là "không thể giải quyết removeRow()" ..tôi sẽ sử dụng phương án nào khác .. –
tạo TableModel tùy chỉnh của riêng bạn, sau đó bạn chịu trách nhiệm tạo phương thức "removeRow" của riêng mình. Nhìn vào mã nguồn của DefaultTableModel để xem cách thực hiện điều này. Giải pháp dễ dàng là sử dụng DefaultTableModel. Tại sao bạn nghĩ rằng bạn cần tạo một TableModel tùy chỉnh? Cho đến khi bạn hiểu những điều cơ bản của việc sử dụng các mô hình, hãy sử dụng các giá trị mặc định được cung cấp. – camickr
Các cách chính xác để áp dụng một bộ lọc để một JTable là thông qua giao diện bổ sung vào một TableRowSorter RowFilter. Sử dụng giao diện này, quan điểm của một mô hình có thể được thay đổi mà không thay đổi mô hình cơ bản. Chiến lược này bảo tồn mô hình Model-View-Controller, trong khi loại bỏ các hàng bạn muốn ẩn khỏi chính mô hình sẽ phá vỡ mô hình bằng cách gây nhầm lẫn cho việc phân tách mối quan tâm của bạn.
Nếu bạn cần một giải pháp làm việc đơn giản, hãy thử sử dụng DefaultTableModel.
Nếu bạn đã tạo mô hình bảng của riêng mình, mở rộng AbstractTableModel, thì bạn cũng nên triển khai phương thức removeRow(). Việc triển khai chính xác phụ thuộc vào cấu trúc cơ bản, mà bạn đã sử dụng để lưu trữ dữ liệu.
Ví dụ, nếu bạn đã sử dụng Vector, sau đó nó có thể là một cái gì đó như thế này:
public class SimpleTableModel extends AbstractTableModel {
private Vector<String> columnNames = new Vector<String>();
// Each value in the vector is a row; String[] - row data;
private Vector<String[]> data = new Vector<String[]>();
...
public String getValueAt(int row, int col) {
return data.get(row)[col];
}
...
public void removeRow(int row) {
data.removeElementAt(row);
}
}
Nếu bạn đã sử dụng List, sau đó nó sẽ rất giống nhau:
// Each item in the list is a row; String[] - row data;
List<String[]> arr = new ArrayList<String[]>();
public void removeRow(int row) {
data.remove(row);
}
HashMap :
//Integer - row number; String[] - row data;
HashMap<Integer, String[]> data = new HashMap<Integer, String[]>();
public void removeRow(Integer row) {
data.remove(row);
}
Và nếu bạn đang sử dụng mảng như thế này
String[][] data = { { "a", "b" }, { "c", "d" } };
sau đó bạn không may mắn vì không có cách nào để tự động xóa các phần tử khỏi mảng. Bạn có thể cố gắng sử dụng các mảng bằng cách lưu trữ riêng một số cờ thông báo các hàng nào bị xóa và không phải là, hoặc bằng một số cách khác, nhưng tôi khuyên bạn nên chống lại nó ... Điều đó sẽ giới thiệu sự phức tạp không cần thiết và thực tế chỉ là giải quyết vấn đề bằng cách tạo một số khác. Đó là cách chắc chắn để kết thúc here. Hãy thử một trong các cách trên để lưu trữ dữ liệu bảng của bạn thay thế.
Đối hiểu rõ hơn về cách làm việc này, và phải làm gì để làm cho công việc mô hình riêng của bạn đúng, tôi mạnh khuyên bạn nên tham khảo Java Tutorial, DefaultTableModel API và nó source code.
mmm là chàng trai rất đơn giản
for(int i = model.getRowCount() - 1; i >= 0; i--)
{
model.removeRow(i);
}
Không có gì như triệu thông báo vào buổi sáng ;-) – greenoldman
- 1. Làm thế nào để loại bỏ FacesMessages khỏi FacesContext?
- 2. Làm thế nào để loại bỏ EGIT khỏi Eclipse Kepler?
- 3. Làm thế nào để loại bỏ GMSPolygon khỏi GMSMapView
- 4. Làm thế nào để loại bỏ R.java khỏi JavaDoc
- 5. Làm thế nào để loại bỏ hàng hiện tại khỏi bảng trong jQuery?
- 6. Làm thế nào để bạn loại bỏ một cột khỏi một mảng có cấu trúc?
- 7. Làm thế nào để loại bỏ một đối tượng khỏi một ArrayList trong Java?
- 8. Làm thế nào để loại bỏ một cặp cụ thể khỏi một bội số C++?
- 9. Làm thế nào để loại bỏ một chuỗi con cụ thể khỏi một chuỗi?
- 10. Làm thế nào để loại bỏ một mục được kéo ra khỏi danh sách của nó?
- 11. Làm thế nào để loại bỏ một số cặp khóa/giá trị khỏi SharedPreferences?
- 12. Làm thế nào để loại bỏ một mục khỏi danh sách (ListField) theo id trong MongoEngine?
- 13. Làm thế nào để loại bỏ dòng đầu tiên khỏi một chuỗi chứa XML?
- 14. Máy chủ SQL: Làm thế nào để bạn loại bỏ dấu chấm câu khỏi một trường?
- 15. Làm thế nào để loại bỏ extender khỏi một quan sát hiện có?
- 16. Làm thế nào để loại bỏ dấu gạch chéo ngược thoát khỏi một var javascript?
- 17. Làm thế nào để loại bỏ một _UIAlertNormalizingOverlayWindow
- 18. Làm thế nào để hủy bỏ chương trình hàng hiện đang được chọn trong một JTable (swing)?
- 19. Làm thế nào để loại bỏ một mô-đun Python?
- 20. Loại bỏ các hàng trống liên tiếp khỏi StringBuilder
- 21. Làm thế nào để loại bỏ các hàng với một giá trị Zero trong R?
- 22. Làm thế nào để loại bỏ một hàng trong mảng hai chiều
- 23. Làm thế nào để loại bỏ khoảng cách còn sau khi ẩn một hàng trong QFormLayout
- 24. Làm thế nào để loại bỏ elasticsearch?
- 25. Làm thế nào để loại bỏ AspxAutoDetectCookieSupport
- 26. Làm thế nào để chỉ giữ một hàng của một bảng, loại bỏ các hàng trùng lặp?
- 27. Làm thế nào để thêm nút trong một hàng của JTable trong Swing java
- 28. Làm thế nào để loại bỏ 0 từ một chuỗi
- 29. Làm thế nào để loại bỏ một XmlNode từ XmlNodeList
- 30. Làm thế nào để loại bỏ một nhịp tại chỗ?
Mẹo: nếu bạn giải thích những gì bạn đã cố gắng, và những gì trên mạng hướng dẫn bạn đã đọc, mọi người sẽ nghiêng nhiều hơn để giúp bạn. Hoặc cho một số mã mẫu và cho chúng tôi biết bit nào không hoạt động. Đọc này nếu bạn chưa: http://java.sun.com/docs/books/tutorial/uiswing/components/table.html –