A JTable JComponent -এর একটি সাবক্লাস ক্লাস এবং এটি একাধিক সারি এবং কলামে প্রদর্শিত তথ্য সহ একটি টেবিল তৈরি করতে ব্যবহার করা যেতে পারে . যখন একটি JTable থেকে একটি মান নির্বাচন করা হয়, একটি TableModelEvent উত্পন্ন হয়, যা একটি টেবিলমডেল লিস্টেনার প্রয়োগ করে পরিচালনা করা হয় ইন্টারফেস. আমরা DefaultTableModel -এ কোড কাস্টমাইজ করে JTable ঘরে একটি JButton যোগ বা সন্নিবেশ করতে পারি অথবা AbstractTableModel এবং আমরা T প্রয়োগ করে কোডটি কাস্টমাইজ করতে পারি যোগ্য সেল রেন্ডারার ৷ ইন্টারফেস এবং getTableCellRendererComponent() ওভাররাইড করতে হবে পদ্ধতি।
উদাহরণ
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(); } }
আউটপুট