JMenu, czcionka dla wszystkich menu

0

Chciałem zmienić czcionkę w menu. Kod:

menuFile.setFont(new Font("Sans", Font.PLAIN, 10));

Działa, ale jak zamiast menuFile chciałem dać Menubar, to czcionka się nie zmieni we wszystkich menu (nic sie nie zmieni).
Jak to zrobić żeby nie pisać ww. dla każdego menu?

0

Ja bym to zrobił tak:

class MyMenuFactory{
   public static JMenu createMenu(String s){
     JMenu menu = new JMenu(s);
     menu.setFont(new Font("Sans", Font.PLAIN, 10));
     return menu;
   }
}

I teraz w kodzie zamiast przez konstruktor tworzysz menu przez fabrykę. Co ważne można to wszystko zamknąć w jednym miejscu i jeżeli będziesz chciał zmienić rodzaj trzcionki to zmianę robisz w jednym miejscu.

0

Takie rozwiązanie też może być.
Dzięki Koziołek :)

0

Koziołek, fajny pomysł. Ja bym go trochę zmodyfikował (ulepszył ?).

import java.awt.*;
import javax.swing.*;
public class MyFactory
{
    private static Font font=new Font("Sans", Font.PLAIN, 10);
    public static JMenu createMenu(String s)
    {
        JMenu menu = new JMenu(s);
        menu.setFont(font);
        return menu;
    }
    public static void setFont(Font f)
    {
        font=f;
    }
}
0

Można jeszcze to rozwijać. Zresztą jak patrzę na ten kod to te statici mi się średnio podobają przy konfiguracji fabryki... Hm... tylko z drugiej strony po co komplikować kod... Dobra za dużo wzorców ostatnio połknąłem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1