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);
|
}
|
}
|