How to Search and Highlight Cells in a JTable Using Java NetBeans
This form include a JTextField, JButton and a JTable.
When the user enters text in the search field and clicks the "Search" button, the application searches through the table for matching entries and highlights them with a yellow background. If the search text is cleared, the highlighting is removed.
What We Are Gonna Use In This Project:
- Java Programming Language.- NetBeans Editor.
What We Will Do In This Project:
- Create the Main Class: A class named Table_Search is created, which extends JFrame, representing the main window of the application.- Constructor (Table_Search()): Set the title, close operation, size, and location of the main frame. Call the initialize() method initialize the user interface components.
- Create the Initialize Method (initialize()): A method to set up the user interface components.
- Create the Search ActionListener (searchActionListener):Implements the ActionListener interface to handle the search button's click event.
- Create the HighlightTableCellRenderer: Extends DefaultTableCellRenderer to customize the appearance of table cells.
- Create the Main Method (main): Show the form.
Project Source Code:
package new_tutorials;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class Table_Search extends JFrame {
private JTextField searchField;
private JTable table;
public Table_Search(){
setTitle("Table Search");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
setLocationRelativeTo(null);
// initialize user interface
initialize();
}
private void initialize(){
// Create and configure the search components
searchField = new JTextField(20);
JButton searchButton = new JButton("Search");
searchButton.addActionListener(new searchActionListener());
JPanel searchPanel = new JPanel();
searchPanel.add(searchField);
searchPanel.add(searchButton);
// Create and configure the table model
DefaultTableModel tableModel = new DefaultTableModel(new Object[][]{
// Sample data rows
{"John", "Developer", 28},
{"Alice", "Designer", 24},
{"Bob", "Manager", 32},
{"Eve", "Engineer", 29},
{"Charlie", "Analyst", 27},
{"Grace", "Architect", 31},
{"Daniel", "Tester", 25},
{"Carl", "Engineer", 29},
{"John", "Analyst", 27},
{"Rafael", "Architect", 31},
{"Daniel", "Tester", 25},
{"Olivia", "Consultant", 26},
{"Michael", "Programmer", 30},
{"Sophia", "Product Manager", 33},
{"David", "Data Scientist", 28},
{"Emma", "Project Manager", 29},
{"William", "UX/UI Designer", 24},
{"Ava", "Software Engineer", 27},
{"James", "Business Analyst", 31}
}, new String[]{"Name","Job","Age"});
// Create the table using the table model
table = new JTable(tableModel);
table.setDefaultRenderer(Object.class, new HighlightTableCellRenderer());
JScrollPane scrollPane = new JScrollPane(table);
// Set up the layout for the JFrame
getContentPane().setLayout(new BorderLayout());
getContentPane().add(searchPanel, BorderLayout.NORTH);
getContentPane().add(scrollPane, BorderLayout.CENTER);
}
private class searchActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
String searchText = searchField.getText();
DefaultTableModel model = (DefaultTableModel) table.getModel();
// Loop through all rows and columns in the table
for(int row = 0; row < model.getRowCount(); row++){
for(int column = 0; column < model.getColumnCount(); column++)
{
String cellValue = String.valueOf(model.getValueAt(row, column));
// If the cell value matches the search text, select the cell
if(cellValue.equals(searchText))
{
table.changeSelection(row, column, false, false);
}
// If the search text is empty, deselect the cell
else if(searchText.equals("")){
table.changeSelection(row, column, false, false);
}
// If the search text is empty, deselect the cell
else{
table.changeSelection(row, column, false, false);
}
}
}
}
}
private class HighlightTableCellRenderer extends DefaultTableCellRenderer{
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column){
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
String searchText = searchField.getText();
String cellValue = String.valueOf(value);
// Highlight the cell with yellow background if the cell value matches the search text
if(cellValue.equals(searchText)){
c.setBackground(Color.orange);
}
else{ c.setBackground(table.getBackground()); }
return c;
}
}
public static void main(String[] args){
SwingUtilities.invokeLater(()->{
Table_Search tableSearch = new Table_Search();
tableSearch.setVisible(true);
});
}
}
The Final Result:
More Java Projects:
Download Projects Source Code