Как разрешить пользователю изменять свой шрифт в JTextPane с помощью JComboBox?
Я нахожу, что в Интернете отсутствует количество полезной документации / учебных пособий, когда речь идет о теме JTextPanes. Я пытаюсь создать простой текстовый процессор и хочу, чтобы он мог выбирать семейство шрифтов из JComboBox, который заполняется самостоятельно на основе шрифтов, которые пользователь установил в своей системе. Однако, что бы я ни пытался экспериментировать, я не могу понять, как заставить это работать.
У меня есть класс панели инструментов, который построен из JTextPane. В настоящее время он имеет множество кнопок стилей, которые работают для установки выравнивания и полужирного, курсива и подчеркивания.
Вот мой код:
<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>
Итак, подведем итог моей проблемы: я понятия не имею, как правильно настроить прослушиватель на ComboBox таким образом, чтобы: а) он чувствителен к выбранному шрифту и б) каким-то образом использовал StyledEditorKit.FontFamilyAction, чтобы упростить жизнь?
Слэш, если я подхожу к чему-либо по этому поводу неправильно, я бы хотел услышать правильный путь. Как я уже сказал, мои источники в Интернете не очень ясны по этому вопросу.
Спасибо!