How to Create a JTable with Delete Button In Java Netbeans
In this Java Tutorial we will see How To Create a JTable with a custom "Remove" button in each row In Java Using Netbeans.
What We Are Gonna Use In This Project:
- Java Programming Language.- NetBeans Editor.
Project Source Code:
package new_tutorials;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
/**
*
* @author 1BestCsharp
*/
public class JTableWithRemoveButton {
public static void main(String[] args) {
JFrame frame = new JFrame("JTable With Remove Button");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600,400);
frame.setLocationRelativeTo(null);
JTable table = createTable();
table.setShowHorizontalLines(true);
table.setShowVerticalLines(true);
JScrollPane scrollPane = new JScrollPane(table);
frame.add(scrollPane);
frame.setVisible(true);
}
// create and customize a jtable
private static JTable createTable(){
// Define column names and sample data
String[] columnNames = {"Name","Age","Remove"};
Object[][] data = {
{"John", 30, "Remove"},
{"Jane", 25, "Remove"},
{"Michael", 35, "Remove"},
{"Emily", 28, "Remove"}
};
DefaultTableModel model = new DefaultTableModel(data,columnNames){
/*@Override
public boolean isCellEditable(int row, int column){
return column == 2;
}*/
};
// Create a JTable and customize its appearance and behavior
JTable table = new JTable(model);
table.setRowHeight(40);
table.setForeground(Color.DARK_GRAY);
table.setFont(new Font("Arial",Font.PLAIN,18));
table.getTableHeader().setFont(new Font("Arial",Font.PLAIN,20));
table.setDefaultRenderer(Object.class, new CenteredTableCellRenderer());
table.getColumnModel().getColumn(2).setCellRenderer(new ButtonRenderer());
table.getColumnModel().getColumn(2).setCellEditor(new ButtonEditor(table));
return table;
}
// Create a custom TableCellRenderer for centering text in cells
static class CenteredTableCellRenderer extends DefaultTableCellRenderer{
public CenteredTableCellRenderer(){
setHorizontalAlignment(JLabel.CENTER);
}
}
// Create a custom TableCellRenderer for rendering buttons in cells
static class ButtonRenderer extends JButton implements TableCellRenderer{
public ButtonRenderer(){
setOpaque(true);
setForeground(Color.WHITE);
setBackground(new Color(255,87,34));
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setText((value == null) ? "" : value.toString());
return this;
}
}
// Create a custom TableCellEditor for handling button clicks and removing rows
static class ButtonEditor extends DefaultCellEditor{
protected JButton button;
private String label;
private final JTable vTable;
public ButtonEditor(JTable table) {
super(new JCheckBox());
this.vTable = table;
button = new JButton();
button.setOpaque(true);
button.addActionListener((e) -> {
// remove row
fireEditingStopped();
int selectedRow = table.getSelectedRow();
if(selectedRow != -1){
((DefaultTableModel) vTable.getModel()).removeRow(selectedRow);
}
});
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
label = (value == null) ? "" : value.toString();
button.setText(label);
return button;
}
}
}
The Final Result:
More Java Projects:
Download Projects Source Code

