1

ダイアログとTextArea. TextAreaコンポーネントの位置合わせは に設定されていますComponent.CENTERaffiche()Dialog を表示するという名前のメソッドを作成しました:

public class Alert extends Dialog {
    private TextArea chp;
    private Command[] comms;
    public Alert(String text, Command[] comms)
    {
        super();
        this.comms = comms;
        setAutoDispose(true);
        for (int c=0; c<comms.length; c++)
            addCommand(comms[c]);
        chp = new TextArea(text);
        chp.setAlignment(Component.CENTER);
        chp.setEditable(false);
        chp.getSelectedStyle().setBorder(null);
        chp.getUnselectedStyle().setBorder(null);
        chp.getSelectedStyle().setBgColor(this.getStyle().getBgColor());
        chp.getUnselectedStyle().setBgColor(this.getStyle().getBgColor());
        chp.setRowsGap(3);
    }
    public Command affiche()
    {
        return show(null, chp, comms);
    }
}

私の問題は、別のフォームからメソッドをTextArea呼び出すときにテキストが上部に表示されることです。affiche()

では、テキストを中央に表示する方法はTextArea? 「中央」とは、幅の中央と高さの中央を意味します。私はすでにコードで水平方向の配置を中央chp.setAlignment(Component.CENTER);に設定しているので、垂直方向の配置を設定する方法を知りたいですか?

4

2 に答える 2

2

以前の答えは間違っていました。今までに何をしたか忘れてしまいました...

TextArea は、文書化されていないスタイルを中央揃えに設定するだけで中央揃えをサポートし、そのまま使用できます。

于 2011-09-11T06:17:44.017 に答える
1

DefaultLookAndFeel クラスを使用せずに解決策を見つけました。ここにあります :

public class Alert extends Dialog {
    private TextArea chp;
    private Command[] comms;
    public Alert(String text, Command[] comms)
    {
        super();
        this.comms = comms;
        setAutoDispose(true);
        for (int c=0; c<comms.length; c++)
            addCommand(comms[c]);

        chp = new TextArea();
        chp.setAlignment(Component.CENTER);
        chp.setEditable(false);
        chp.getSelectedStyle().setBorder(null);
        chp.getUnselectedStyle().setBorder(null);
        chp.getSelectedStyle().setBgColor(this.getStyle().getBgColor());
        chp.getUnselectedStyle().setBgColor(this.getStyle().getBgColor());
        while (text.substring(0, (text.length()/2)+1).length() < chp.getMaxSize()/2)
        {
           text = " ".concat(text);
        }
        chp.setText(text);
    }
    public Command affiche()
    {
        return show(null, chp, comms);
    }
}

だから私はちょうどwhileコードを追加しました。そしてそれはうまくいきます!

于 2011-09-13T12:43:29.540 に答える