3

HTML ドキュメントを表示している JTextPane があるとします。

ボタンを押すと、ドキュメントのフォントサイズが大きくなります。

残念ながら、これは思ったほど簡単ではありません...ドキュメント全体のフォント サイズを変更する方法を見つけましたが、それはすべてのテキストが指定したフォント サイズに設定されていることを意味します。私が望むのは、フォント サイズが、既にドキュメントに含まれていたものに比例して拡大されることです。

ドキュメントのすべての要素を反復処理し、フォント サイズを取得し、新しいサイズを計算して元に戻す必要がありますか? どうすればそのような操作を行うことができますか? 最善の方法は何ですか?

4

3 に答える 3

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);
        }
    });

したがって、この例のようなメソッドを次のように書くことができます。

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);
}
于 2009-06-02T13:38:25.490 に答える
1

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

HTMLをそのままレンダリングするので、cssクラスを変更するだけで十分かもしれません。

于 2009-06-02T12:27:34.307 に答える