I know I can change the font of each cell individually by overriding `getCellRenderer(row, col)` in JTable but I want to be able to change the font of an entire column at once and, ideally, have the renderer edit the font of the text in my table model.
I have a custom cell renderer already, shown below, but it's not doing the job.
public class CustomCellRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1L;
private Font font;
private float size;
public CustomCellRenderer() {
super();
}
public void setFontSize(float size) {
this.size = size;
this.font = CardFont.getFont(size);
}
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);
this.font = CardFont.getFont(size);
c.setFont(font);
return c;
}
@Override
public Font getFont() {
return this.font;
}
@Override
public void setFont(Font f) {
this.font = f;
}
@Override
public void setValue(Object value) {
setText((String) value);
setFont(font);
}
}
This is the font I am using,
public class CardFont {
private static Font f;
private static float size;
public static Font getFont(float fontsize) {
size = fontsize;
try {
InputStream fontStream = new BufferedInputStream(new FileInputStream("src/com/marcuzzo/yahtzee/YahtzeeCardFont.ttf"));
f = Font.createFont(Font.TRUETYPE_FONT, fontStream).deriveFont(Font.PLAIN, size);
} catch (FontFormatException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return f;
}
}