2011-09-09 19 views
1

私はダイアログとTextAreaを持っています。 TextAreaコンポーネントのアラインメントはComponent.CENTERに設定されています。TextAreaテキストを中央に配置する方法は?

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

私の問題は、別のフォームからaffiche()メソッドを呼び出すときにテキストがTextAreaの上部に表示されていることである:私は、ダイアログを表示しaffiche()という名前のメソッドを作成しました。

TextAreaの中心にテキストを表示するにはどうすればよいですか?私は幅の中心と高さの中心を「中心に合わせる」ことを意味します。私はすでに水平整列をコードchp.setAlignment(Component.CENTER);によって中心に設定しました。したがって、垂直整列を設定する方法を知りたいですか?

答えて

0

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コードを追加しました。そしてそれは動作します!

3

私の前の答えが間違っていた、私たちは今では何をしたか忘れてしまった...

のTextAreaは、その文書化されていないだけで整列を中央にスタイルを設定し、それが箱から出して動作しますにもかかわらず、中心合わせをサポートしています。

+1

私たちに教えてくださいこれを実装する方法の例 –

+0

私は以下のコードを試しました。それはプロジェクトで働いています。 textArea.getStyle()。setAlignment(CENTER); //ここでtextAreaはTextAreaのインスタンスです – Thirumalvalavan

関連する問題