package publicsWay; import javax.swing.*; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; import javax.swing.table.JTableHeader; import java.awt.*; public class TableUtils { // Create a styled table with specified column names @SuppressWarnings("serial") public static JTable createCommonTable(String[] columnNames) { // Create table model DefaultTableModel model = new DefaultTableModel(columnNames, 0) { @Override public boolean isCellEditable(int row, int column) { return false; } }; // Create table instance JTable table = new JTable(model); table.setAutoCreateRowSorter(true); table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); // Apply table styling setupTableStyle(table); // Apply header styling setupTableHeaderStyle(table); return table; } // Setup basic table styling public static void setupTableStyle(JTable table) { table.setShowVerticalLines(false); table.setShowHorizontalLines(true); table.setGridColor(new Color(220, 220, 220)); table.setIntercellSpacing(new Dimension(0, 1)); table.setRowHeight(25); } // Setup table header styling public static void setupTableHeaderStyle(JTable table) { JTableHeader header = table.getTableHeader(); header.setBackground(new Color(70, 130, 180)); header.setForeground(Color.WHITE); header.setFont(header.getFont().deriveFont(Font.BOLD)); header.setPreferredSize(new Dimension(header.getWidth(), 30)); // Create and apply header renderer DefaultTableCellRenderer headerRenderer = createHeaderRenderer(); for (int i = 0; i < table.getColumnCount(); i++) { table.getColumnModel().getColumn(i).setHeaderRenderer(headerRenderer); } } // Create header renderer @SuppressWarnings("serial") private static DefaultTableCellRenderer createHeaderRenderer() { return new DefaultTableCellRenderer() { { setHorizontalAlignment(SwingConstants.CENTER); setBackground(new Color(70, 130, 180)); setForeground(Color.WHITE); setFont(getFont().deriveFont(Font.BOLD)); setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); } }; } // Create cell renderer with zebra striping @SuppressWarnings("serial") public static DefaultTableCellRenderer createCellRenderer(int alignment) { return 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); // Set alternating row colors if (!isSelected) { if (row % 2 == 0) { c.setBackground(new Color(240, 240, 200)); } else { c.setBackground(Color.WHITE); } } else { c.setBackground(new Color(200, 220, 240)); } // Set cell alignment setHorizontalAlignment(alignment); // Set cell padding setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5)); return c; } }; } // Create centered cell renderer with zebra striping (most common case) public static DefaultTableCellRenderer createCenteredCellRenderer() { return createCellRenderer(SwingConstants.CENTER); } }