2016-09-30 5 views
0

私はJavaを使用している基本的なワープロに取り組んでいます。つまり、TextAttributeを使って書き込むテキストに下線を引くことができましたが、テキストを平準化する方法はわかりません。これは私がのTextAttributeを初期化するために使用されるコードです:テキストのアンダーラインをオフに設定するにはどうすればよいですか?

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

、これは私がテキストに下線を引くようになった方法です:

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

申し訳ありませんが、この質問は愚かな(まだ初心者)に聞こえる場合。しかし、どのように私のテキストをアンダーラインなしでプレーンに戻すことができますか?

答えて

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

+0

は、あなたが実際にそれを試したことがありますか? deriveFontは元のフォントにあった属性を削除することをどのように知っていますか? – pvg

+0

@pvg申し訳ありません、私の悪い、今修正されました。 – Antoniossss

+0

それは働いた!どうもありがとうございます! attrs.putの "-1"の目的は何ですか?私はそれについて興味がある。 –

関連する問題