Skip to content

Instantly share code, notes, and snippets.

@tychobrailleur
Created June 2, 2020 19:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tychobrailleur/73b79037f06885e210ea160cdd71ab81 to your computer and use it in GitHub Desktop.
Save tychobrailleur/73b79037f06885e210ea160cdd71ab81 to your computer and use it in GitHub Desktop.
package com.weblogism;
import com.github.weisj.darklaf.LafManager;
import com.github.weisj.darklaf.theme.DarculaTheme;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
public class CenteredLabelFrame extends JFrame {
static class DarkTableModel extends AbstractTableModel {
int rows;
int cols;
public DarkTableModel(int rows, int cols) {
this.rows = rows;
this.cols = cols;
}
@Override
public int getRowCount() {
return rows;
}
@Override
public int getColumnCount() {
return cols;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return "(" + rowIndex + ", " + columnIndex + ")";
}
}
static class CenteredCellRenderer implements TableCellRenderer {
private TableCellRenderer renderer;
public CenteredCellRenderer(TableCellRenderer renderer) {
this.renderer = renderer;
}
@Override
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
Component comp = renderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (comp instanceof JLabel) {
JLabel label = (JLabel)comp;
label.setHorizontalAlignment(JLabel.CENTER);
}
return comp;
}
}
public CenteredLabelFrame() {
setTitle("Lorem Ipsum");
setSize(new Dimension(800, 400));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try {
JPanel mainPanel = new JPanel();
JTable aTable = new JTable();
aTable.setModel(new DarkTableModel(10,10));
for (int i = 0; i < aTable.getColumnCount(); i++) {
TableColumn col = aTable.getColumn(aTable.getColumnName(i));
col.setCellRenderer(new CenteredCellRenderer(aTable.getDefaultRenderer(Object.class)));
}
mainPanel.setLayout(new BorderLayout());
mainPanel.add(new JScrollPane(aTable), BorderLayout.CENTER);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(mainPanel, BorderLayout.CENTER);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
// When commenting out the following line, all good.
LafManager.install(new DarculaTheme());
final CenteredLabelFrame frame = new CenteredLabelFrame();
frame.setVisible(true);
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment