Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào chúng ta có thể thêm / chèn một JButton vào ô JTable trong Java?


A JTable là một lớp con của JComponent và nó có thể được sử dụng để tạo một bảng với thông tin được hiển thị trong nhiều hàng và cột . Khi một giá trị được chọn từ JTable, TableModelEvent được tạo, được xử lý bằng cách triển khai TableModelListener giao diện. Chúng tôi có thể thêm hoặc chèn một JButton vào ô JTable bằng cách tùy chỉnh mã trong DefaultTableModel hoặc AbstractTableModel và chúng tôi cũng có thể tùy chỉnh mã bằng cách triển khai T couldCellRenderer giao diện và cần ghi đè getTableCellRendererComponent () phương pháp.

Ví dụ

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class JTableButtonTest extends JFrame {
   private JTable table;
   private JScrollPane scrollPane;
   public JTableButtonTest() {
      setTitle("JTableButton Test");
      TableCellRenderer tableRenderer;
      table = new JTable(new JTableButtonModel());
      tableRenderer = table.getDefaultRenderer(JButton.class);
      table.setDefaultRenderer(JButton.class, new JTableButtonRenderer(tableRenderer));
      scrollPane = new JScrollPane(table);
      add(scrollPane, BorderLayout.CENTER);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setSize(400, 300);
      setVisible(true);
   }
   public static void main(String[] args) {
      new JTableButtonTest();
   }
}
class JTableButtonRenderer implements TableCellRenderer {
   private TableCellRenderer defaultRenderer;
   public JTableButtonRenderer(TableCellRenderer renderer) {
      defaultRenderer = renderer;
   }
   public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
      if(value instanceof Component)
         return (Component)value;
         return defaultRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
   }
}
class JTableButtonModel extends AbstractTableModel {
   private Object[][] rows = {{"Button1", new JButton("Button1")},{"Button2", new JButton("Button2")},{"Button3", new JButton("Button3")}, {"Button4", new JButton("Button4")}};
   private String[] columns = {"Count", "Buttons"};
   public String getColumnName(int column) {
      return columns[column];
   }
   public int getRowCount() {
      return rows.length;
   }
   public int getColumnCount() {
      return columns.length;
   }
   public Object getValueAt(int row, int column) {
      return rows[row][column];
   }
   public boolean isCellEditable(int row, int column) {
      return false;
   }
   public Class getColumnClass(int column) {
      return getValueAt(0, column).getClass();
   }
}

Đầu ra

Làm cách nào chúng ta có thể thêm / chèn một JButton vào ô JTable trong Java?