Tôi đã thực hiện một GUI swing có JTable với một số hàng và Columns.How tôi nên thêm một nút để hàng trong một JTable?Làm thế nào để thêm nút trong một hàng của JTable trong Swing java
Trả lời
Bạn không thêm nó vào một hàng - bạn thêm nó vào ô. This tutorial mô tả những gì bạn cần.
Table Button Column đưa ra một cách tiếp cận.
Bạn có thể thêm Thành phần làm ô bảng.
Trước hết, bạn nên triển khai một lớp có JButton làm lớp cha và hai giao diện TableCellRenderer và TableCellEditor.
Lý do nên triển khai TableCellEditor là dành cho ActionEvent của nút nhận.
public class TableButton extends JButton implements TableCellRenderer, TableCellEditor {
private int selectedRow;
private int selectedColumn;
Vector<TableButtonListener> listener;
public TableButton(String text) {
super(text);
listener = new Vector<TableButtonListener>();
addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
for(TableButtonListener l : listener) {
l.tableButtonClicked(selectedRow, selectedColumn);
}
}
});
}
public void addTableButtonListener(TableButtonListener l) {
listener.add(l);
}
public void removeTableButtonListener(TableButtonListener l) {
listener.remove(l);
}
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row, int col) {
return this;
}
@Override
public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int col) {
selectedRow = row;
selectedColumn = col;
return this;
}
@Override
public void addCellEditorListener(CellEditorListener arg0) {
}
@Override
public void cancelCellEditing() {
}
@Override
public Object getCellEditorValue() {
return "";
}
@Override
public boolean isCellEditable(EventObject arg0) {
return true;
}
@Override
public void removeCellEditorListener(CellEditorListener arg0) {
}
@Override
public boolean shouldSelectCell(EventObject arg0) {
return true;
}
@Override
public boolean stopCellEditing() {
return true;
}
}
Sau đó, tôi đã thêm EventListener có tên TableButtonListener cho sự kiện nút xử lý như sau.
public interface TableButtonListener extends EventListener {
public void tableButtonClicked(int row, int col);
}
Và sử dụng ở trên Trình kết xuất/biên tập.
TableButton buttonEditor = new TableButton("Button");
buttonEditor.addButtonListener(new TableButtonListener() {
@Override
public void tableButtonClicked(int row, int col) {
// do something
}
});
TableColumn col = new TableColumn(1, 80);
col.setCellRenderer(buttonEditor);
col.setCellEditor(buttonEditor);
cols.addColumn(colPattern);
Nếu bạn muốn hiển thị nhãn nút khác nhau cho mỗi hàng, bạn nên chèn khối mã vào getTableCellRendererComponent và getTableCellEditorComponent mà là để thay đổi nhãn nút của.
chỉnh sửa: Mã biên dịch ngay bây giờ. Lỗi khung trong TableButton constructor cố định.
Cảm ơn xrath đã trợ giúp –
-1 đây là việc triển khai bất hợp pháp CellEditor: hợp đồng, nó _must_ thông báo cho CellEditorListeners đã đăng ký, mà nó tầm thường không thể với việc thực hiện trống của addEditorListener ;-) Siêu hợp đồng _must_ được phục vụ bằng cách triển khai, không có cách nào xung quanh. – kleopatra
Tôi đã thử nó, và tôi có .... biến không xác định 'nghe' ... đó là gì? :( – gumuruh
- 1. Java Swing JTable chọn nhiều hàng lập trình
- 2. Java Swing - Nhiều tiêu đề cột trong JTable?
- 3. Tạo JTable bên trong nút của JTree
- 4. Làm thế nào để thêm JCheckBox trong JTable?
- 5. 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)?
- 6. Làm thế nào để loại bỏ một hàng khỏi JTable?
- 7. Java: làm thế nào để làm đệm đôi trong Swing?
- 8. Màu sắc nút Java Swing
- 9. Làm thế nào để làm cho nền của một JTable minh bạch?
- 10. Đặt chiều cao của một hàng trong một JTable trong java
- 11. Làm thế nào để thêm một nút trong Android?
- 12. Di chuyển một hàng trong JTable
- 13. Java - Swing - JTable - Đặt màu cho hàng đã chọn, nhưng không phải ô
- 14. Làm thế nào để hiển thị một JTable trong một JPanel với Java?
- 15. Làm thế nào để xóa nội dung của một jTable?
- 16. Paypal Thêm vào giỏ hàng nút - làm thế nào để tạo ra với Java?
- 17. Làm thế nào để tạo một jtable không thể chỉnh sửa trong java?
- 18. Làm thế nào để thêm hàng vào giữa một TableLayoutPanel
- 19. Lập trình chọn một hàng trong JTable
- 20. làm thế nào để chèn hoặc nối thêm dòng mới trên đầu trang của jtextarea trong java swing?
- 21. Java Swing JTable; Menu Nhấp chuột phải (Làm thế nào để làm cho nó "chọn" hay còn gọi là tô sáng hàng)
- 22. Làm thế nào để biết indexPath/hàng trên nút bấm của ô Tableview trong một UITableView?
- 23. Làm thế nào để tích hợp Webcam trong ứng dụng Swing của Java?
- 24. Làm thế nào để xây dựng một ứng dụng java swing trong intelijidea
- 25. Ẩn một cột trong JTable
- 26. Cách thêm chú giải công cụ vào các hàng của JTable
- 27. Làm thế nào để thực hiện đúng MVC trong Java với Swing?
- 28. Làm thế nào tôi có thể đặt một điều khiển trong JTableHeader của một JTable?
- 29. Làm thế nào để bọc đường trong một tế bào jtable?
- 30. Chọn nhiều hàng của JTable
ok, Cảm ơn Droidln.net –
Không cần phải cảm ơn, chỉ cần đánh dấu vào ô :) – Bostone
waw! Tôi vừa mở ví dụ đó và nhận ra rằng mã nguồn đã thêm một "JCheckbox mới" vào CellEditor. Nhưng thực ra nó được hiển thị dưới dạng JButton. Dù sao, câu hỏi của tôi là, tại sao chúng ta nên đặt JCheckBox vào nó? :( – gumuruh