How do I get the default font for Swing JTabbedPane labels?
Asked Answered
M

6

12

Does the text in Swing components have a default font? In particular, what about tab labels on JTabbedPanes?

I'm working on a mock-up of a GUI made with Swing and want it to blend it with a screen image I grabbed of a Swing app.

Mailemailed answered 16/9, 2009 at 16:54 Comment(0)
J
21

It depends on the Look and Feel. If it's an application you've written, get the values from UIManager.getDefaults().getFont("TabbedPane.font")

Jeffreyjeffreys answered 16/9, 2009 at 17:46 Comment(3)
Yes, thanks, that worked, although you forgot a pair of parentheses: UIManager.getDefaults().getFont("TabbedPane.font") It turned out to be Arial Bold, as I thought (for what it's worth).Mailemailed
How do you determine the appropriate keys for other swing components?Gaslit
You can get the font for other components by changing 'TabbedPane' to the element type you're interested in. For instance, I just found that the 'ToolTip.font' is 'Dialog'.Sniggle
H
3

The UIManager Defaults shows what the values are for all properties for all components (including "TabbedPane.font").

Haemolysis answered 16/9, 2009 at 18:52 Comment(0)
G
3

Based on the answer of Reverend Gonzo, this piece of code lets you know what keys are in the UIDefaults. As the keys are self-explanatory, you know what key you can use. I had to know the key for the JTextField font, for example, and could only find it this way.

Set<Object> keys = UIManager.getDefaults().keySet();
for (Object key : keys) {
     if (key instanceof String && ((String) key).contains("font")) {
          System.out.println(key + "=" + UIManager.getDefaults().get(key));
     }
}

If you're looking for a font, in your case, just cast the key to a String and check whether it contains the word "font". This way you narrow the set of keys you have potential interest for.

I got a list

  • Menu.font=...
  • TextField.font=...
  • RadioButtonMenuItem.font=...
  • ToolTip.font=...
  • TitledBorder.font=...
  • ...
  • TabbedPane.font=...
  • ...

And thus you would need to pick TabbedPane.font.

Glassblowing answered 28/2, 2013 at 14:35 Comment(1)
Tried this on Java8 but only got a reduced subset of items. Changed the approach to assign the result of getDefaults() to a Hashtable, created an iterator and then checked its keys just as you suggested.Ornithomancy
E
1

It may depend on the 'Look and Feel' you are using, but for me Swing's default font is

DejaVu Sans - Plain

For most components the font size defaults to around 12 or 13

Emigrate answered 16/9, 2009 at 16:57 Comment(0)
M
0

It looks like it's Arial. That's what Identifont tells me and it looks right.

Mailemailed answered 16/9, 2009 at 17:42 Comment(0)
L
-3

The Java GUI default font is "Helvetica", bold size 9, color gray.

Landan answered 30/3, 2013 at 2:20 Comment(1)
that's wrong in its absoluteness: as others already correcty answered, fonts depend on LAFs and/or OS settingBilyeu

© 2022 - 2024 — McMap. All rights reserved.