Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Changing the font of an entire JTable column.

+2
−0

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

}

And my code implementing the Renderer:

	column1Render.setFontSize(10f);	
	column1Render.setFont(CardFont.getFont(10f));			 

column1Render.setLabel(model.getDataVector().elementAt(0).elementAt(1).toString());

    topScore.getColumnModel().getColumn(1).setCellRenderer(column1Render);	
Why does this post require moderator attention?
You might want to add some details to your flag.
Why should this post be closed?

1 comment thread

General comments (1 comment)

0 answers

Sign up to answer this question »