How to validate if JTable has an empty cell in Java?


A JTable is a subclass of JComponent class for displaying complex data structures. A JTable can follow the Model View Controller (MVC) design pattern for displaying the data in rows and columns. A JTable will generate TableModelListener, TableColumnModelListener, ListSelectionListener, CellEditorListener and RowSorterListener interfaces.

We can validate whether the JTable cell is empty or not by implementing the getValueAt() method of JTable class. If we click on the "Click Here" button, it will generate an action event and display a popup message like "Field is Empty" to the user.

Example

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class JTableEmptyValidateTest extends JFrame {
   private JPanel panel;
   private JTable table;
   private JButton button;
   String[] columnNames = new String[] {"Student 1", "Student 2"};
   String[][] dataValues = new String[][] {{"95", "100"}, {"", "85"}, {"80", "100"}};
   public JTableEmptyValidateTest() {
      setTitle("Empty Validation Table");
      panel = new JPanel();
      table = new JTable();
      TableModel model = new myTableModel();
      table.setModel(model);
      panel.add(new JScrollPane(table));
      button = new JButton("Click Here");
      button.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent event) {
            if(validCheck()) {
               JOptionPane.showMessageDialog(null,"Field is filled up");
            } else {
               JOptionPane.showMessageDialog(null, "Field is empty");
            }
         }
      });
      add(panel, BorderLayout.CENTER);
      add(button, BorderLayout.SOUTH);
      setSize(470, 300);
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   public boolean validCheck() {
      if(table.getCellEditor()!= null) {
         table.getCellEditor().stopCellEditing();
      }
      for(int i=0; i < table.getRowCount(); i++) {
         for(int j=0; j < table.getColumnCount(); j++) {
            String value = table.getValueAt(i,j).toString();
            if(value.trim().length() == 0) {
               return false;
            }
         }
      }
      return true;
   }
   class myTableModel extends DefaultTableModel {
      myTableModel() {
         super(dataValues, columnNames);
      }
      public boolean isCellEditable(int row, int cols) {
         return true;
      }
   }
   public static void main(String args[]) {
      new JTableEmptyValidateTest();
   }
}

Output

Updated on: 12-Feb-2020

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements