Created
June 2, 2020 19:06
-
-
Save tychobrailleur/73b79037f06885e210ea160cdd71ab81 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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