如何设置文本下划线?

时间:2016-09-30 17:05:12

标签: java

我正在使用Java开发一个基本的文字处理器。问题是,我设法使用TextAttribute为我写的文字加下划线,但我不知道如何将文本设置为plain。这是我用来初始化TextAttribute的代码:

    Font underLineFont = textInput.getFont();  
    Map attributes = underLineFont.getAttributes();
    attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);

这就是我强调文字的方式:

textInput.setFont(underLineFont.deriveFont(attributes));

很抱歉,如果这个问题听起来很愚蠢(仍然是初学者)。但是如何在没有下划线的情况下将文本设置回原位?

1 个答案:

答案 0 :(得分:2)

试试这个:

Map attributes = textInput.getFont().getAttributes();
attributes.set(TextAttribute.UNDERLINE,-1);
textInput.setFont(textInput.getFont().deriveFont(attributes));

概念证明:

public static void main(String[] args) {
    JFrame f = new JFrame();
    f.setLayout(new FlowLayout());
    JLabel norm = new JLabel("Some text with some font");
    JLabel under = new JLabel("Underlined font");
    JLabel norm_again = new JLabel("Again font with no underline");

    f.getContentPane().add(norm);
    f.getContentPane().add(under);
    f.getContentPane().add(norm_again);
    f.pack();

    f.setLocationRelativeTo(null);
    f.setVisible(true);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Map attrs = norm.getFont().getAttributes();
    attrs.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
    under.setFont(norm.getFont().deriveFont(attrs));

    attrs = under.getFont().getAttributes();
    attrs.put(TextAttribute.UNDERLINE, -1);
    norm_again.setFont(under.getFont().deriveFont(attrs));
}

结果:

enter image description here