单击JButton后保持选择以设置文本样式

时间:2010-11-21 00:35:42

标签: java swing jbutton jtextpane jmenuitem

我正在编写一个相当简单的文本编辑器,我对我的样式按钮有疑问。当我突出显示文本并单击“粗体”按钮时,文本按预期加粗,但我的选择不再可见。我仍然可以解开选择,使其变为斜体或加下划线,但是你无法看到所选内容。所以,我想知道是否有一个设置允许我点击按钮,但保留我的选择?我尝试了一个JMenuItem而不是JButton,这似乎有用,但随后它让我的工具栏看起来很糟糕。示例代码如下。

//frame and pane creation up here
JToolBar tool = new JToolBar();
JToggleButton boldButton = new JToggleButton("Bold");
boldButton.addActionListener(new StyledEditorKit.BoldAction());
tool.add(boldButton);

感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

  

所以,我想知道是否有一个允许我点击按钮的设置,但保留我的选择?

boldButton.setFocusable( false );

答案 1 :(得分:1)

正如您所注意到的那样,选择仍然存在,但单击工具栏按钮会从文本窗格中删除焦点并隐藏选择。您需要使用requestFocus设置焦点。但是,您需要编写自己的动作侦听器来添加焦点代码 - 您可以扩展BoldAction来执行此操作。