Jak zezwolić użytkownikowi na zmianę czcionki w JTextPane za pomocą JComboBox?

Odkrywam, że brakuje ilości pomocnej dokumentacji / samouczków w Internecie, jeśli chodzi o temat JTextPanes. Próbuję wykonać prosty procesor tekstu i chcę, aby był w stanie wybrać rodzinę czcionek z JComboBox, który wypełnia się na podstawie czcionek zainstalowanych przez użytkownika w ich systemie. Jednak bez względu na to, co próbuję eksperymentować, nie wiem, jak to zrobić.

Mam klasę paska narzędzi zbudowaną z JTextPane. Obecnie ma kilka przycisków stylów, które działają, aby ustawić wyrównanie i pogrubienie, kursywę i podkreślenie.

Oto mój kod:

<code>/**
* The StyleBar is used to customize styles in a Styled Document. It will take a
* JTextPane as an argument for its constructor and then all actions to be taken
* will affect the text in it.
*
* @author Andrew
*/
public class StyleBar extends JToolBar {

    private JLabel fontLbl;
    private JComboBox fontBox;

        // ...Irrelevant stuff to the problem at hand.

    /**
    * The initEvents method is used to initialize the necessary events for the
    * tool bar to actually do its job. It establishes the focus listener to the
    * buttons on the bar, and gives each one its individual functionality. It 
    * also establishes the Font Selection interface.
    */
    public void initEvents() {
        //For each item in the tool bar, add the focus listener as well as the
        //formatting listeners:
        boldFormat.addActionListener(new StyledEditorKit.BoldAction()); //boldFormat is
        boldFormat.addActionListener(resetFocus);                       //a JButton

        //Ditto for my italicsFormat and underlineFormat button(s) in the toolbar

        leftAlign.addActionListener(new StyledEditorKit.AlignmentAction(null,
                StyleConstants.ALIGN_LEFT));
        leftAlign.addActionListener(resetFocus);    //This listener just resets focus
                                                    //back onto the TextPane.

        //Ditto for my right and centerAlign buttons

        //Set up the Font list, and add a listener to the combo box
        buildFontMenu();
    }

    /**
    * The buildFontMenu detects all of the SYstem's available fonts and adds 
    * them to the Font Selection box.
    */
    public void buildFontMenu(){
        GraphicsEnvironment ge = 
                GraphicsEnvironment.getLocalGraphicsEnvironment();
        final String[] fontNames = ge.getAvailableFontFamilyNames();
        for (int i = 0; i < fontNames.length; i++){
            //What do I do here to take the entry at String[i] and make it so that when
            //the user selects it it sets the font Family in a similar way to that of
            //pressing the boldFormat button or the leftAlign button?
        }
    }

    //Everything else is irrelevant
</code>

Podsumowując mój problem: nie mam pojęcia, jak poprawnie ustawić słuchacza na ComboBox w taki sposób, że a) jest wrażliwy na wybraną indywidualną czcionkę ib) w jakiś sposób wykorzystuje StyledEditorKit.FontFamilyAction, aby ułatwić życie?

Cięcie, jeśli podejdę do tego coś w niewłaściwy sposób, chciałbym usłyszeć właściwy sposób. Jak już powiedziałem, moje źródła w Internecie nie są zbyt jasne na ten temat.

Dzięki wielkie!

questionAnswers(2)

yourAnswerToTheQuestion