*Markus: (+LINUX) UIManager erzielt keine Wirkung

Hallo,

offensichtlich scheint die Java-UIManager-Klasse mit der Desktop-Umgebung Xfce auf Linux nichts anfangen zu können, da ich glaube, dass mein Java-Code richtig ist:

  
UIManager.put("Menu.font", new FontUIResource("Arial", Font.TRUETYPE_FONT, 14));  
  
...bringt nichts. Es werden die hässlichen Standardfonts verwendet.  
  
UIManager.put("Menu.font", new Font("Arial", Font.TRUETYPE_FONT, 14));  
  
...dito.  
  
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());  
  
....hat auch keine Wirkung auf Internal Frames. Bei Windows funktioniert es ausnahmsweise. Bei der Xfce-Oberfläche, die ich benutze, sinddie Internal Frames in diesem Java-Standardblau.  
Seltsamerweise gibt UIManager.getDefaults() jede Menge Daten aus, z.B:  
  
OptionPane.errorSound ,, sounds/OptionPaneError.wav  
Label.font ,, javax.swing.plaf.FontUIResource[family=Dialog,name=Dialog,style=bold,size=12]  
TextArea.caretForeground ,, sun.swing.PrintColorUIResource[r=51,g=51,b=51]  
SplitPaneDivider.draggingColor ,, javax.swing.plaf.ColorUIResource[r=64,g=64,b=64]  
OptionPane.errorDialog.titlePane.background ,, javax.swing.plaf.ColorUIResource[r=255,g=153,b=153]  
Desktop.ancestorInputMap ,, javax.swing.plaf.InputMapUIResource@3570b0  
TextArea.inactiveForeground ,, javax.swing.plaf.ColorUIResource[r=184,g=207,b=229]  
controlHighlight ,, javax.swing.plaf.ColorUIResource[r=255,g=255,b=255]  
TextField.caretBlinkRate ,, 500  
TextArea.selectionBackground ,, javax.swing.plaf.ColorUIResource[r=184,g=207,b=229]  
Button.defaultButtonFollowsFocus ,, false  
ToolTip.background ,, javax.swing.plaf.ColorUIResource[r=184,g=207,b=229]  
MenuItem.acceleratorForeground ,, javax.swing.plaf.ColorUIResource[r=99,g=130,b=191]  
Tree.font ,, javax.swing.plaf.FontUIResource[family=Dialog,name=Dialog,style=plain,size=12]  
TabbedPane.focus ,, javax.swing.plaf.ColorUIResource[r=99,g=130,b=191]  
TabbedPane.light ,, javax.swing.plaf.ColorUIResource[r=238,g=238,b=238]  
ScrollPane.font ,, javax.swing.plaf.FontUIResource[family=Dialog,name=Dialog,style=plain,size=12]  
RadioButton.darkShadow ,, javax.swing.plaf.ColorUIResource[r=122,g=138,b=153]  
ToolBar.isRollover ,, true  
FileChooserUI ,, javax.swing.plaf.metal.MetalFileChooserUI  
InternalFrame.activeTitleBackground ,, javax.swing.plaf.ColorUIResource[r=184,g=207,b=229]  
MenuItem.disabledForeground ,, javax.swing.plaf.ColorUIResource[r=153,g=153,b=153]  
OptionPane.minimumSize ,, javax.swing.plaf.DimensionUIResource[width=262,height=90]  
ToggleButton.darkShadow ,, javax.swing.plaf.ColorUIResource[r=122,g=138,b=153]  
DesktopIcon.background ,, javax.swing.plaf.ColorUIResource[r=238,g=238,b=238]  
ToggleButton.textShiftOffset ,, 0  
Spinner.ancestorInputMap ,, javax.swing.plaf.InputMapUIResource@79717e  
ToggleButton.background ,, javax.swing.plaf.ColorUIResource[r=238,g=238,b=238]  
List.focusCellHighlightBorder ,, javax.swing.plaf.BorderUIResource$LineBorderUIResource@10a2d64  
Slider.background ,, javax.swing.plaf.ColorUIResource[r=238,g=238,b=238]  
RadioButtonMenuItem.borderPainted ,, true  
EditorPane.selectionBackground ,, javax.swing.plaf.ColorUIResource[r=184,g=207,b=229]  
Menu.background ,, javax.swing.plaf.ColorUIResource[r=238,g=238,b=238]  
PasswordField.selectionForeground ,, sun.swing.PrintColorUIResource[r=51,g=51,b=51]  
RadioButton.textShiftOffset ,, 0  
RadioButton.background ,, javax.swing.plaf.ColorUIResource[r=238,g=238,b=238]  
OptionPane.errorIcon ,, javax.swing.plaf.IconUIResource@cfec48  
  
  
Und was ich noch ganz witzig finde, ist, dass bei einem Befehl wie diesem  
  
rechnung.setFont(new Font("Arial", Font.TRUETYPE_FONT, 14));  
  
wobei "rechnung" ein JMenu ist, der Font gesetzt wird. Setze ich ein  
  
UIManager.put("Menu.font", new Font("Arial", Font.TRUETYPE_FONT, 14));  

bleibt das Programm davon wieder unbeeindruckt. Wie kann so etwas sein?

Markus

  1. hallo,

    offensichtlich scheint die Java-UIManager-Klasse mit der Desktop-Umgebung Xfce auf Linux nichts anfangen zu können

    Der Schluß erscheint mir zweifelhaft. Was hat dein JDK mit der grafischen Oberfläche zu tun?

    UIManager.put("Menu.font", new FontUIResource("Arial", Font.TRUETYPE_FONT, 14));

    Und warum klammerst du dich so sehr an "Arial" (die ist schließlich unter Linux kaum einmal vorhanden)? Es ist zwar nur ein Schuß ins Blaue, aber was passiert, wenn du statt "Arial" eben mal "Sans Serif" nimmst - oder "Helvetica"?

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Hallo,

      offensichtlich scheint die Java-UIManager-Klasse mit der Desktop-Umgebung Xfce auf Linux nichts anfangen zu können

      Der Schluß erscheint mir zweifelhaft. Was hat dein JDK mit der grafischen Oberfläche zu tun?

      Warum JDK? Java greift auf irgendwelche Systemressourcen zu. Wie denn sonst könnte das Java-Programm Fenster wie in der Windowsoberfläche bekommen. Ich lasse mich aber gerne belehren, denn mich würde brennend interessieren, was sich "im Hintergrund" so alles abspielt, dass Java weiß, wie ein Fenster auszusehen hat.

      UIManager.put("Menu.font", new FontUIResource("Arial", Font.TRUETYPE_FONT, 14));

      Und warum klammerst du dich so sehr an "Arial" (die ist schließlich unter Linux kaum einmal vorhanden)? Es ist zwar nur ein Schuß ins Blaue, aber was passiert, wenn du statt "Arial" eben mal "Sans Serif" nimmst - oder "Helvetica"?

      Arial ist bei mir eigentlich standardmäßig vorhanden. Mittlerweile fand ich mithilfe der Java-NG heraus, dass man den UIManager vor einer GUI-Instanzierung setzen muss. Immerhin funktioniert jetzt schon mal der geänderte Font.

      Markus