2009-06-02 16 views
3

HTMLドキュメントを表示しているJTextPaneがあるとします。HTMLテキストを表示するJTextPaneのフォントサイズを大きくする

私が望むのは、ボタンを押すと、文書のフォントサイズが大きくなります。

残念ながら、これは見た目ほど簡単ではありません... I found a way to change the font size of the whole document, but that means that all the text is set to the font size that I specify。私が望むのは、フォントサイズが、文書内にすでにあるものに比例して増加するということです。

文書のすべての要素を繰り返し処理し、フォントサイズを取得し、新しいサイズを計算して戻しますか?どうすればこのような操作を行うことができますか?最善の方法は何ですか?

答えて

1

おそらくCSSを使用して、スタイルフォントのみを変更できます。

これはHTMLをそのままレンダリングするので、CSSクラスを変更するだけで十分です。

4

リンク先の例では、何をしようとしているかの手がかりを見つけることができます。

ライン

StyleConstants.setFontSize(attrs, font.getSize()); 

は、JTextPaneののフォントサイズを変更し、あなたがこのメソッドにパラメータとして渡すフォントのサイズに設定します。現在のサイズに基づいて新しいサイズに設定したいもの。

//first get the current size of the font 
int size = StyleConstants.getFontSize(attrs); 

//now increase by 2 (or whatever factor you like) 
StyleConstants.setFontSize(attrs, size * 2); 

これにより、JTextPaneのフォントサイズが2倍になります。あなたはもちろん、より遅い速度で増加することができます。

これで、メソッドを呼び出すボタンが必要になりました。

JButton b1 = new JButton("Increase"); 
    b1.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
      increaseJTextPaneFont(text); 
     } 
    }); 

だから、このように例では1と同様の方法を記述することができます。彼は、フォントサイズが文書にすでにあったものに比例した規模で増加した」ことを望んでいた

public static void increaseJTextPaneFont(JTextPane jtp) { 
    MutableAttributeSet attrs = jtp.getInputAttributes(); 
    //first get the current size of the font 
    int size = StyleConstants.getFontSize(attrs); 

    //now increase by 2 (or whatever factor you like) 
    StyleConstants.setFontSize(attrs, size * 2); 

    StyledDocument doc = jtp.getStyledDocument(); 
    doc.setCharacterAttributes(0, doc.getLength() + 1, attrs, false); 
} 
+0

。 "しかし、あなたの例では、文書内のすべてのフォントが同じサイズに設定されています。 – ka3ak

関連する問題