我想在JTextArea实例中为所选文本设置粗体字体样式。
我试过这种方式:
textArea.getSelectedText().setFont(new Font("sansserif",Font.BOLD, 12));
但它不起作用。我也试过了JTextPane
和JEditorPane
而不是JTextArea
但没有效果。
我该怎么做?
答案 0 :(得分:1)
我想在JTextArea实例中为所选文本设置粗体字体样式。
JTextArea
无法执行此操作。您需要使用JTextPane
。
然后,您可以使用Action
提供的默认StyledEditorKit
。创建JButton
或JMenuItem
来执行此操作:
JButton boldButton = new JButton( new StyledEditorKit.BoldAction() );
JMenuItem boldMenuItem = new JMenuItem( new StyledEditorKit.BoldAction() );
将按钮或菜单项添加到框架中。然后使用可以单击按钮/菜单项以在选择后加粗文本。这是大多数编辑工作的方式。您也可以使用键盘调用Action to Action的加速度。
阅读Text Component Features上Swing教程中的部分,了解更多信息和工作示例。
答案 1 :(得分:1)
<强>简介强>
@Freek de Bruijn和@Gilbert Le Blanc已经发布了关于如何做你想做的事情的(有用的)答案,但没有一个解释为什么你要做的事情不起作用。
不是答案我该怎么做?
但
的解释但它不起作用。
编辑: @camickr发布了我认为正确的方法。
<强>答案强>
关于约JTextArea
:
您可以通过多种方式自定义文本区域。例如,虽然给定的文本区域只能以一种字体和颜色显示文本,但您可以设置它使用的字体和颜色。
(引言中的所有重点都是我的)和
如果您希望文本区域使用多种字体或其他样式显示其文本,则应使用编辑器窗格或文本窗格。
这是因为JTextArea
使用PlainDocument
(请参阅this):
PlainDocument
为文字提供了一个基本容器,其中所有文字都以相同的字体显示。
但是,JTextPane
使用DefaultStyledDocument
:
用于没有特定格式的样式文本的容器。
答案 2 :(得分:0)
您可以使用类似于更改颜色的JTextPane
组件,如以下答案中所述:How to set font color for selected text in jTextArea。
例如:
import javax.swing.JFrame;
import javax.swing.JTextPane;
import javax.swing.WindowConstants;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
public class BoldSelected {
public static void main(final String[] args) {
new BoldSelected().launchGui();
}
private void launchGui() {
final String title = "Set bold font style for selected text in JTextArea instance";
final JFrame frame = new JFrame("Stack Overflow: " + title);
frame.setBounds(100, 100, 800, 600);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
final JTextPane textPane = new JTextPane();
textPane.setText(title + ".");
final Style style = textPane.addStyle("Bold", null);
StyleConstants.setBold(style, true);
textPane.getStyledDocument().setCharacterAttributes(4, 33, style, false);
frame.getContentPane().add(textPane);
frame.setVisible(true);
}
}