我正在使用Java开发一个基本的文字处理器。问题是,我设法使用TextAttribute为我写的文字加下划线,但我不知道如何将文本设置为plain。这是我用来初始化TextAttribute的代码:
Font underLineFont = textInput.getFont();
Map attributes = underLineFont.getAttributes();
attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
这就是我强调文字的方式:
textInput.setFont(underLineFont.deriveFont(attributes));
很抱歉,如果这个问题听起来很愚蠢(仍然是初学者)。但是如何在没有下划线的情况下将文本设置回原位?
答案 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));
}
结果: