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

Java 单击JButton后保留选择以设置文本样式,java,swing,jbutton,jtextpane,jmenuitem,Java,Swing,Jbutton,Jtextpane,Jmenuitem,我正在制作一个相当简单的文本编辑器,我对我的样式按钮有一个问题。当我高亮显示文本并单击“粗体”按钮时,文本将按预期粗体显示,但我的选择不再可见。我仍然可以取消对所选内容的绑定、斜体化或下划线,但您无法看到所选内容。所以,我想知道是否有一个设置允许我点击按钮,但保留我的选择?我尝试了一个JMenuItem而不是JButton,这似乎很有效,但是它让我的工具栏看起来很糟糕。下面是示例代码 //frame and pane creation up here JToolBar tool = new JT

我正在制作一个相当简单的文本编辑器,我对我的样式按钮有一个问题。当我高亮显示文本并单击“粗体”按钮时,文本将按预期粗体显示,但我的选择不再可见。我仍然可以取消对所选内容的绑定、斜体化或下划线,但您无法看到所选内容。所以,我想知道是否有一个设置允许我点击按钮,但保留我的选择?我尝试了一个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);

非常感谢您的帮助。

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

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


我该如何扩展它?我尝试只执行boldButton.addActionListener(新样式的编辑工具包.BoldAction(){public void actionPerformed(ActionEvent e){//不工作,修复窗格。requestFocus();}}});,但这就失去了大胆的行动。谢谢您的回复。@user485418:别忘了调用
super.actionPerformed(e)我知道这将是一件琐碎的事情。谢谢。这也很有效,而且实现起来更简单。谢谢。+1,我在寻找那个方法,但不知怎么的找不到。
boldButton.setFocusable( false );