当前位置: 首页 > 面试题库 >

如何允许用户使用JComboBox在JTextPane中更改其字体?

丁经略
2023-03-14
问题内容

我发现有关JTextPanes的主题在互联网上缺少有用的文档/教程。我正在尝试做一个简单的文本处理器,我希望它能够从JComboBox中选择一个字体系列,该字体系列根据用户在其系统上安装的字体进行填充。但是,无论尝试什么,我都无法弄清楚如何使其发挥作用。

我所拥有的是一个基于JTextPane构建的工具栏类。当前,它具有许多样式按钮,可用于设置对齐方式以及粗体,斜体和下划线。

这是我的代码:

/**
* 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

因此,总结一下我的问题:我不知道如何正确地将侦听器设置为ComboBox,以便a)对所选的单个字体敏感,b)以某种方式使用StyledEditorKit.FontFamilyAction使生活变得轻松?

Slash,如果我正以错误的方式处理任何事情,我很想听听正确的方法。就像我说的那样,我在互联网上的消息来源对此并不十分清楚。

非常感谢!


问题答案:

StyledEditorTest将Actions放入JToolBar,但想法是相同的。另请参阅[此处]http://codingdict.com/questions/155131HTMLDocumentEditor提到的Charles
Bell’s 。例如

bar.add(new StyledEditorKit.FontFamilyAction("Serif", Font.SERIF));
bar.add(new StyledEditorKit.FontFamilyAction("SansSerif", Font.SANS_SERIF));

附录:使用时JComboBox,您可以将事件 转发 到相应的StyledEditorKit
Action,默认情况下,该会对当前选择进行操作。

JComboBox combo = new JComboBox();
combo.addItem("Serif");
combo.addItem("Sans");
combo.addActionListener(new ActionListener() {

    Action serif = new StyledEditorKit.FontFamilyAction("Serif", Font.SERIF);
    Action sans = new StyledEditorKit.FontFamilyAction("Sans", Font.SANS_SERIF);

    @Override
    public void actionPerformed(ActionEvent e) {
        if ("Sans".equals(e.getActionCommand())) {
            sans.actionPerformed(e);
        } else {
            serif.actionPerformed(e);
        }
    }
});


 类似资料:
  • 问题内容: 我希望能够更改网页中文本的大小,我想可以使用jQuery,但是我没有使用javascript的经验。 另一个问题是该网页是phtml文件,并且使用了多个php echo命令。该页面由多个phtml文件组成。 编辑:我想给用户3种不同字体大小的选择。 问题答案: 我要采取的方法是将字体大小百分比应用于html的body标签 然后,对于所有其他元素,在ems中指定font-size,这将生

  • 问题内容: 我正在尝试制作一个游戏,希望用户更改其输入键,例如,他们按A键,然后将变量更改为A键,以便在游戏中按A键时它们向上移动。任何帮助或建议,将不胜感激。 这段代码的当前问题是,它给了我一个与按下的键相对应的列表,我需要一个键标识符,以便以后可以用来移动精灵。 问题答案: 当您收到事件时,您已经按了 顺便说一句:每个事件可能有不同的字段。您可以在文档的黄色列表中看到所有内容:事件

  • 在WooCommerce中,当订单处于处理状态时,我希望在“我的帐户”页面上显示一个操作按钮,允许客户通过更改订单状态以完成来确认订单已经到达。 我已经看到允许客户通过电子邮件相关的问题代码改变订单的状态(没有答案),这并没有真正帮助实现我的目标。 客户是否可以通过将订单状态更改为“已完成”来确认订单是否已到达?

  • 我想根据用户需要将我写的文本(和字体颜色)更改为另一种颜色。 我制作了一个JFrame,并添加了JTextPane。在文本窗格的右侧,我有一个不同颜色的列表(“白色”、“黑色”、“绿色”等)。Jframe还有一个JMenuBar,如果用户突出显示列表中的一个元素(比如黑色),我想更改textpane的背景色(我知道这很愚蠢,但这是老师的作业) 问题是,文本是黑色的,所以当我改变背景颜色时,文本“消

  • 我是java语言新手,我正在尝试创建一个GUI,它有JComboBox,允许用户选择其中一个选项,并根据所选选项,通过添加更多文本字段来更新面板。目前我面临的一个问题是,如果我选择(选项1),面板不会更新,它应该显示5个文本字段及其标签。 我的问题是:如何更新面板以根据用户从JComboBox中选择的选项添加更多文本字段? 此外,我还面临另一个问题,我无法找到设置JFrame大小的方法 这是我的代

  • 问题内容: 我正在用Swift编写我的第一个iOS应用程序(仅iPhone)。主应用程序视图应允许用户从相册中选择图像。 我找到了以下 ViewController.swift 示例代码: 并具有以下View Controller Scene- 但是,当我启动该应用程序时,仅显示黑屏。我做错了什么?我发现的另一个示例代码是在Objective-C中,这对我没有帮助。 问题答案: 如果只想让用户使用