我正在尝试更改我的JTable中标题的字体,但是setFont方法没有工作。我试着在渲染器上使用setFont,但没有成功。我试过使用UIDefaults,但也不起作用。我试着在setFont对象上调用JTableHeader,但这也不起作用。
headerModel.setColumnIdentifiers(headers);
JTable prodTable = new JTable(headerModel) {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
prodTable.setShowGrid(false);
prodTable.setRowHeight(50);
prodTable.setFillsViewportHeight(true);
prodTable.setBorder(null);
//UIDefaults defaults = UIManager.getLookAndFeelDefaults();
//defaults.put("TableHeader.font", new Font("SansSerif",Font.BOLD,50));
prodTable.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {// alternate background color for rows
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);
if (!isSelected)
c.setBackground(row % 2 == 0 ? Color.decode("#E5EBF4") : Color.decode("#ECF3FA"));
return c;
};
});
final DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setBorder(null);
renderer.setBackground(Color.decode("#ECF3FA"));
renderer.setHorizontalAlignment(JLabel.CENTER);
renderer.setForeground(Color.decode("#707070"));
//renderer.setFont(new Font("SansSerif",Font.BOLD,50));
renderer.setPreferredSize(new Dimension(100,50));
JTableHeader jTableHeader = prodTable.getTableHeader();
jTableHeader.setFont(new Font("SansSerif",Font.BOLD,50));
jTableHeader.setDefaultRenderer(renderer);
final TableRowSorter<DefaultTableModel> sorter = new TableRowSorter<DefaultTableModel>(headerModel);
prodTable.setRowSorter(sorter);
JScrollPane tableScroll = new JScrollPane(prodTable){
@Override
public Dimension getPreferredSize() {
return new Dimension(100, 100);
}
};发布于 2022-11-13 20:24:29
对我来说很好。
从基本代码开始,然后每次进行一次更改,查看它何时停止工作:
import java.awt.*;
import javax.swing.*;
public class MRE
{
private static void createAndShowGUI()
{
JTable table = new JTable(5, 10);
Font f = new Font("SansSerif",Font.BOLD,50);
table.getTableHeader().setFont(f);
JScrollPane scrollPane = new JScrollPane( table );
JFrame frame = new JFrame("SSCCE");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(scrollPane);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationByPlatform( true );
frame.setVisible( true );
}
public static void main(String[] args) throws Exception
{
java.awt.EventQueue.invokeLater( () -> createAndShowGUI() );
}
}https://stackoverflow.com/questions/74424374
复制相似问题