4

現在はそう見える

ここに画像の説明を入力

そう見えるようにするにはどうすればいいですか?

ここに画像の説明を入力

以下は私のコードです:

    JFrame f = new JFrame();
    JTextPane textPane = new JTextPane();

    JTextField component = new JTextField("      ");
    component.setMaximumSize(component.getPreferredSize());
    textPane.setSelectionStart(textPane.getDocument().getLength());
    textPane.setSelectionEnd(textPane.getDocument().getLength());
    textPane.insertComponent(component);
    try {
        textPane.getDocument().insertString(textPane.getDocument().getLength(), "text",
            new SimpleAttributeSet());
    } catch (BadLocationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    f.add(new JScrollPane(textPane));
    f.setSize(200, 100);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);

私が見つけたこのトピックに近い単一の質問: JTextPane 挿入コンポーネント、垂直方向の配置に問題 がありますしかし、配置を変更する方法はありません。しかし、そこでの議論によれば、それは可能でなければなりません。

4

3 に答える 3

7

これを使用できますhttp://java-sl.com/tip_center_vertically.html

JComponentsそれも同様に動作するはずです。

LabelView's getPreferredSpan()下部にスペースを追加してオーバーライドすることもできます。

RowViewまたは、内部クラスをオーバーライドすることもできますParagraphView

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/javax/swing/text/ParagraphView.java#ParagraphView.Row

それは内部クラス Row extends BoxView を指します

独自のものと交換する必要があります。上書きしてみる

public float getAlignment(int axis) 

CENTER (0.5) を返します。これで解決しない場合は、layoutMinorAxis(0 をオーバーライドして適切なオフセット (シフト) を返します)。

于 2012-12-18T13:12:38.753 に答える
1

JLabel を使用してドキュメントのスタイルを定義し、垂直方向の配置を設定します。

Style s = doc.addStyle("icUf", regular);        
ImageIcon icUf = createImageIcon("uf.png", "Unidad Funcional");
if (icUf != null) {
    JLabel jl = new JLabel(icUf);
    jl.setVerticalAlignment(JLabel.CENTER);
    StyleConstants.setComponent(s, jl);
}

ラベルを挿入します。

doc.insertString(doc.getLength(), " ", doc.getStyle("icUf"));

そしてテキスト:

doc.insertString(doc.getLength(), " text ", doc.getStyle("bold"));
于 2013-10-03T08:40:55.083 に答える