用 jTextPane 给文本加下划线
Underline text with jTextPane
大家好,我有一个使用 JTextPane 的面板,我想交替显示文本和下划线文本,但我不知道为什么我不能在我想加下划线的文本部分加下划线。
这是我的代码,我只想在文本中加下划线:"Underline":
public class TestMLD extends JPanel{
private MLD mld;
TestMLD() throws BadLocationException{
init();
}
private void init() throws BadLocationException {
JTextPane textPane = new JTextPane();
textPane.setOpaque(false);
SimpleAttributeSet attributeSet = new SimpleAttributeSet();
StyleConstants.setItalic(attributeSet, true);
textPane.setCharacterAttributes(attributeSet, true);
Font font = new Font("Serif", Font.ITALIC, 18);
textPane.setFont(font);
StyledDocument doc = textPane.getStyledDocument();
Style style = textPane.addStyle("", null);
doc.insertString(doc.getLength(), "Some text ", style);
StyleConstants.setUnderline(attributeSet, true);
/**THE PART I WANT TO UNDERLINE **/
doc.insertString(doc.getLength(), "Underline ", style);
StyleConstants.setUnderline(attributeSet, false);
doc.insertString(doc.getLength(), "Some text\n", style);
JScrollPane scrollPane = new JScrollPane(textPane);
textPane.setEditable(false);
add(textPane);
}
public static void main(String[] args) throws BadLocationException {
JFrame frame = new JFrame();
frame.getContentPane().add(new TestMLD());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.setVisible(true);
}
}
提前致谢
StyleConstants.setUnderline(attributeSet, true);
您正在为“attributeSet”设置“下划线”属性。
doc.insertString(doc.getLength(), "Underline ", style);
你为什么要尝试使用“样式”。您的“样式”变量没有属性。
使用“attributeSet”,因为它包含您的属性:
//doc.insertString(doc.getLength(), "Underline ", style);
doc.insertString(doc.getLength(), "Underline ", attributeSet);
此外,您为什么要尝试设置“斜体”属性:
StyleConstants.setItalic(attributeSet, true);
textPane.setCharacterAttributes(attributeSet, true);
Font font = new Font("Serif", Font.ITALIC, 18);
您使用的是“斜体”字体。
摆脱:
//StyleConstants.setItalic(attributeSet, true);
//textPane.setCharacterAttributes(attributeSet, true);
大家好,我有一个使用 JTextPane 的面板,我想交替显示文本和下划线文本,但我不知道为什么我不能在我想加下划线的文本部分加下划线。 这是我的代码,我只想在文本中加下划线:"Underline":
public class TestMLD extends JPanel{
private MLD mld;
TestMLD() throws BadLocationException{
init();
}
private void init() throws BadLocationException {
JTextPane textPane = new JTextPane();
textPane.setOpaque(false);
SimpleAttributeSet attributeSet = new SimpleAttributeSet();
StyleConstants.setItalic(attributeSet, true);
textPane.setCharacterAttributes(attributeSet, true);
Font font = new Font("Serif", Font.ITALIC, 18);
textPane.setFont(font);
StyledDocument doc = textPane.getStyledDocument();
Style style = textPane.addStyle("", null);
doc.insertString(doc.getLength(), "Some text ", style);
StyleConstants.setUnderline(attributeSet, true);
/**THE PART I WANT TO UNDERLINE **/
doc.insertString(doc.getLength(), "Underline ", style);
StyleConstants.setUnderline(attributeSet, false);
doc.insertString(doc.getLength(), "Some text\n", style);
JScrollPane scrollPane = new JScrollPane(textPane);
textPane.setEditable(false);
add(textPane);
}
public static void main(String[] args) throws BadLocationException {
JFrame frame = new JFrame();
frame.getContentPane().add(new TestMLD());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.setVisible(true);
}
}
提前致谢
StyleConstants.setUnderline(attributeSet, true);
您正在为“attributeSet”设置“下划线”属性。
doc.insertString(doc.getLength(), "Underline ", style);
你为什么要尝试使用“样式”。您的“样式”变量没有属性。
使用“attributeSet”,因为它包含您的属性:
//doc.insertString(doc.getLength(), "Underline ", style);
doc.insertString(doc.getLength(), "Underline ", attributeSet);
此外,您为什么要尝试设置“斜体”属性:
StyleConstants.setItalic(attributeSet, true);
textPane.setCharacterAttributes(attributeSet, true);
Font font = new Font("Serif", Font.ITALIC, 18);
您使用的是“斜体”字体。
摆脱:
//StyleConstants.setItalic(attributeSet, true);
//textPane.setCharacterAttributes(attributeSet, true);