我正在嘗試創建一個簡單的所見即所得編輯器,它將允許用戶選擇文本並以粗體/下劃線/斜體顯示。目前,用戶可以選擇文本,右鍵單擊它,然後從彈出菜單中,這最終將大膽的風格,像這樣選擇的文本選擇大膽:如何獲取JTextPane中選定文本的樣式?
this.getStyledDocument().setCharacterAttributes(this.getSelectionStart(), this.getSelectionEnd()-this.getSelectionStart(), boldStyle, false);
大膽的風格設置,如下所示:
boldStyle = this.addStyle("Bold", null);
StyleConstants.setBold(boldStyle, true);
我想知道的是,如果它有可能獲得當前所選文本的樣式,因此,如果用戶試圖「大膽」的一些文字,已經是大膽的,我能察覺這一點,編寫代碼以取消粗體顯示此文本,而不是簡單地將粗體樣式應用於該文本?
喜歡的東西:
if(!this.getStyledDocument().getStyleForSelection(this.getSelectionStart(), this.getSelectionEnd()-this.getSelectionStart()).isBold()){
//do bold
}
else{
//un-bold
}
將是一個夢想成真,但我不希望這一點。我實際上希望得到的是要麼被告知我做錯了,要麼被顯示爲「方式」,要麼被指向實現這一目標的圓滿方法。
非常感謝您的時間。
+1:您可能還想查看StyledEditorKit提供的其他選項。它可能適用於所見即所得編輯器的其他方面 – akf
非常感謝您的這一點。再次,正確的解決方案非常簡單!我從我的彈出式菜單項中刪除了addActionCommand和addActionListener,並使用「bold.addActionListener(new StyledEditorKit.BoldAction());」,它完美地工作。再次感謝! –