2010-11-21 73 views
0

我正在制作一个相当简单的文本编辑器,并且我有关于我的样式按钮的问题。当我突出显示文本并单击我的“粗体”按钮时,文本会按预期的方式变为粗体,但我的选择不再可见。我仍然可以取消选择,斜体或强调选项,但只是看不到选定内容。所以,我想知道是否有一个设置可以让我点击按钮,但保留我的选择?我尝试了一个JMenuItem而不是JButton,而且这看起来很有效,但后来它让我的工具栏看起来很糟糕。下面的示例代码。单击JButton以保留样式文本后的选择

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

任何帮助表示赞赏。

回答

5

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

boldButton.setFocusable(false); 
+0

这也工作得很好,而且实现起来更简单。谢谢。 – Samsquanch 2010-11-21 01:17:12

+0

+1,我正在寻找这种方法,但不知何故找不到它。 – casablanca 2010-11-21 01:17:45

1

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

+0

我该如何去扩展它?我尝试只是做boldButton.addActionListener(新StyledEditorKit.BoldAction(){ public void actionPerformed(ActionEvent e){// does not Work,fix pane.requestFocus(); } });,但那然后失去大胆的行动。谢谢回复。 – Samsquanch 2010-11-21 01:03:34

+0

@ user485418:别忘了打电话给'super.actionPerformed(e);' – casablanca 2010-11-21 01:06:19

+0

我知道这将是一件小事。谢谢。 – Samsquanch 2010-11-21 01:15:54