2010-11-21 72 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