標題說明了一切。假設我有一個右鍵單擊菜單,並帶有「刪除線選定的文本」選項。當我在jtextpane中選擇了一些文本時,右鍵單擊 - >「刪除刪除所選文本」,所選文本被刪除。如何在JTextPane中刪除選定的文本? (java)
任何想法?
標題說明了一切。假設我有一個右鍵單擊菜單,並帶有「刪除線選定的文本」選項。當我在jtextpane中選擇了一些文本時,右鍵單擊 - >「刪除刪除所選文本」,所選文本被刪除。如何在JTextPane中刪除選定的文本? (java)
任何想法?
Swing文本組件使用Actions
來提供文本窗格的各種格式化功能。
以下是StyledEditorKit
的UnderlineAction
的代碼。
public static class UnderlineAction extends StyledTextAction {
/**
* Constructs a new UnderlineAction.
*/
public UnderlineAction() {
super("font-underline");
}
/**
* Toggles the Underline attribute.
*
* @param e the action event
*/
public void actionPerformed(ActionEvent e) {
JEditorPane editor = getEditor(e);
if (editor != null) {
StyledEditorKit kit = getStyledEditorKit(editor);
MutableAttributeSet attr = kit.getInputAttributes();
boolean underline = (StyleConstants.isUnderline(attr)) ? false : true;
SimpleAttributeSet sas = new SimpleAttributeSet();
StyleConstants.setUnderline(sas, underline);
setCharacterAttributes(editor, sas, false);
}
}
}
所以基本上你將需要更換的「下劃線」 StyleConstants方法使用「刪除線」 StyleConstants方法來創建自己的「StrikeThroughAction」。
一旦你創建了一個Action,你就可以通過使用Action創建一個JMenuItem或JButton來使用Action。點擊組件後,直通屬性將被添加到選定的文本中。
非常感謝您的回答!這是我想達到的結果的99%。 正如您在上面給我的代碼註釋所說,操作**切換**下劃線屬性。我想要使用它的方式是:選擇一些文本,然後右鍵單擊 - >刪除線。被選中的文本被掃描穿過,我可以繼續輸入普通文本(沒有刪除線)。 –
**編輯:**我忘了提及:我不想將它用作單個動作(使用右鍵單擊菜單選項來切換它),而是以其他方法使用它(在此處執行更多操作)。 –
在你右鍵點擊動作
objJTextPane.setContentType("text/html");
String[] args = objJTextPane.getText().split(objJTextPane.getSelectedText());
objJTextPane.setText("<strike>" + objJTextPane.getSelectedText() + "</strike>"+ args[1].toString());
適用你的邏輯在分裂字符串。
我沒有使用html標籤。 –
http://java-sl.com/tip_colored_strikethrough.html請參閱示例 – StanislavL