# javax.swing.table

***

**1. Creating a Simple JTable:**

```java
import javax.swing.table.*;
import javax.swing.*;

public class SimpleTable {
    public static void main(String[] args) {
        String[] columnNames = {"Name", "Age", "Occupation"};
        Object[][] data = {
            {"John", 25, "Software Engineer"},
            {"Mary", 30, "Doctor"},
            {"Bob", 28, "Teacher"}
        };

        DefaultTableModel model = new DefaultTableModel(data, columnNames);
        JTable table = new JTable(model);

        JFrame frame = new JFrame("Simple Table");
        frame.add(new JScrollPane(table));
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
}
```

**2. Using a Rendered for Cell Values:**

```java
import javax.swing.table.*;
import javax.swing.*;
import java.awt.*;

public class RenderedTable {
    public static void main(String[] args) {
        String[] columnNames = {"Name", "Age"};
        Object[][] data = {
            {"John", 25},
            {"Mary", 30},
            {"Bob", 28}
        };

        DefaultTableModel model = new DefaultTableModel(data, columnNames);
        JTable table = new JTable(model);

        // Set a renderer for the Age column
        table.getColumnModel().getColumn(1).setCellRenderer(new 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);
                c.setBackground(Color.GREEN);
                return c;
            }
        });

        JFrame frame = new JFrame("Rendered Table");
        frame.add(new JScrollPane(table));
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
}
```

**3. Using an Editor for Cell Values:**

```java
import javax.swing.table.*;
import javax.swing.*;
import java.awt.event.*;

public class EditorTable {
    public static void main(String[] args) {
        String[] columnNames = {"Name", "Age"};
        Object[][] data = {
            {"John", 25},
            {"Mary", 30},
            {"Bob", 28}
        };

        DefaultTableModel model = new DefaultTableModel(data, columnNames);
        JTable table = new JTable(model);

        // Set an editor for the Age column
        table.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(new JTextField()));

        JFrame frame = new JFrame("Editor Table");
        frame.add(new JScrollPane(table));
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
}
```

**4. Adding a Row to a JTable:**

```java
import javax.swing.table.*;
import javax.swing.*;

public class AddRowTable {
    public static void main(String[] args) {
        String[] columnNames = {"Name", "Age"};
        Object[][] data = {
            {"John", 25}
        };

        DefaultTableModel model = new DefaultTableModel(data, columnNames);
        JTable table = new JTable(model);

        // Add a new row to the table
        Object[] rowData = {"Mary", 30};
        model.addRow(rowData);

        JFrame frame = new JFrame("Add Row Table");
        frame.add(new JScrollPane(table));
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
}
```

**5. Removing a Row from a JTable:**

```java
import javax.swing.table.*;
import javax.swing.*;

public class RemoveRowTable {
    public static void main(String[] args) {
        String[] columnNames = {"Name", "Age"};
        Object[][] data = {
            {"John", 25},
            {"Mary", 30}
        };

        DefaultTableModel model = new DefaultTableModel(data, columnNames);
        JTable table = new JTable(model);

        // Remove the first row from the table
        model.removeRow(0);

        JFrame frame = new JFrame("Remove Row Table");
        frame.add(new JScrollPane(table));
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
}
```

**6. Sorting a JTable:**

```java
import javax.swing.table.*;
import javax.swing.*;
import java.util.Comparator;

public class SortTable {
    public static void main(String[] args) {
        String[] columnNames = {"Name", "Age"};
        Object[][] data = {
            {"John", 25},
            {"Mary", 30},
            {"Bob", 28}
        };

        DefaultTableModel model = new DefaultTableModel(data, columnNames);
        JTable table = new JTable(model);

        // Add a comparator for the Age column
        table.getColumnModel().getColumn(1).setComparator(new Comparator<Object>() {
            @Override
            public int compare(Object o1, Object o2) {
                Integer age1 = (Integer) o1;
                Integer age2 = (Integer) o2;
                return age1.compareTo(age2);
            }
        });

        // Sort the table by the Age column
        table.setRowSorter(new TableRowSorter<TableModel>(model));

        JFrame frame = new JFrame("Sort Table");
        frame.add(new JScrollPane(table));
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
}
```

**7. Filtering a JTable:**

```java
import javax.swing.table.*;
import javax.swing.*;
import java.util.regex.Pattern;

public class FilterTable {
    public static void main(String[] args) {
        String[] columnNames = {"Name", "Age"};
        Object[][] data = {
            {"John", 25},
            {"Mary", 30},
            {"Bob", 28}
        };

        DefaultTableModel model = new DefaultTableModel(data, columnNames);
        JTable table = new JTable(model);

        // Add a filter to the table
        table.setRowFilter(RowFilter.regexFilter(".*ohn.*"));

        JFrame frame = new JFrame("Filter Table");
        frame.add(new JScrollPane(table));
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
}
```

**8. Using a Selection Listener:**

```java
import javax.swing.table.*;
import javax.swing.*;
import java.awt.event.ListSelectionListener;

public class SelectionListenerTable {
    public static void main(String[] args) {
        String[] columnNames = {"Name", "Age"};
        Object[][] data = {
            {"John", 25},
            {"Mary", 30},
            {"Bob", 28}
        };

        DefaultTableModel model = new DefaultTableModel(data, columnNames);
        JTable table = new JTable(model);

        // Add a selection listener to the table
        table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {
                // Get the selected row
                int row = table.getSelectedRow();
                if (row >= 0) {
                    // Get the value of the selected cell
                    Object value = table.getValueAt(row, 0);
                    System.out.println(value);
                }
            }
        });

        JFrame frame = new JFrame("Selection Listener Table");
        frame.add(new JScrollPane(table));
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
}
```

**9. Using a Cell Editor:**

```java
import javax.swing.table.*;
import javax.swing.*;
import java.awt

```
