2016-10-31 9 views
0

私は練習用の簡単なテキストエディタを作っています。私はMS WordのようにTextAreaからのテキスト入力を中央に置くボタンを作成したいと思います。私はFXMLで自分のボタンを持っていますが、TextAreaオブジェクトにどのメソッドを使うべきかわからないので、setStyle()またはgetChild()を試しましたが、いずれもうまくいきませんでした。 TextAreaJavaFXでのTextAreaのコンテンツの整列

@FXML 
private void toTheCenter(ActionEvent event){ 
    String text = textArea.getText(); 
} 

ザッツ

<Button onAction="#toTheCenter" text="center"/> 
FXML

の私のボタンザッツ

<center> 
    <TextArea fx:id="textArea"/> 
</center> 

とコントローラからの方法のthats。

+0

私はNetBeansはIDEであるNetBeansの –

+0

あなたはscenebuilder使用していますが、私は知りたいと思ったようにあなたがscenebuilerを使用していましたfxアプリケーションをスタイリングするために、私は答えを出しました。どうすれば助けてくれるのか確認してください。 – Cardano

+0

を使用してい –

答えて

2

テキスト領域のテキストノードに-fx-text-alignment propertyを設定する必要があります。

動的にこれを行うための最善の方法は、テキストエリアにカスタムCSS疑似クラスを定義することです:

PseudoClass centered = PseudoClass.getPseudoClass("centered"); 

してから、外部CSSファイルで、あなたはあなたができるその後

.text-area:centered .text { 
    -fx-text-alignment: center ; 
} 

を行うことができます上の中心に切り替えること

textArea.pseudoClassStateChanged(centered, true); 

を呼び出し、

textArea.pseudoClassStateChanged(centered, false); 

スイッチをオフにします。ここで

はSSCCE( centering-text-area.css上記CSSコードを置く)です:

import javafx.application.Application; 
import javafx.css.PseudoClass; 
import javafx.geometry.Insets; 
import javafx.geometry.Pos; 
import javafx.scene.Scene; 
import javafx.scene.control.TextArea; 
import javafx.scene.control.ToggleButton; 
import javafx.scene.layout.BorderPane; 
import javafx.stage.Stage; 

public class TextAreaWithCentering extends Application { 

    @Override 
    public void start(Stage primaryStage) { 

     TextArea textArea = new TextArea(); 

     PseudoClass centered = PseudoClass.getPseudoClass("centered"); 

     ToggleButton center = new ToggleButton("Center"); 
     center.selectedProperty().addListener((obs, wasCentered, isNowCentered) -> 
       textArea.pseudoClassStateChanged(centered, isNowCentered)); 

     BorderPane.setAlignment(center, Pos.CENTER); 
     BorderPane.setMargin(center, new Insets(5)); 
     BorderPane root = new BorderPane(textArea, null, null, center, null); 

     Scene scene = new Scene(root, 600, 600); 

     scene.getStylesheets().add("centering-text-area.css"); 

     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 
1
#text-area *.text { -fx-text-alignment: center; } 

プロジェクトフォルダにstyle.cssファイルを作成し、javaコードに次の行を追加します。

scene.getStylesheets().addAll(this.getClass().getResource("style.css").toExternalForm()); primaryStage.setScene(scene); 
+0

それはCSSではない、これをJavaコードに追加する方法は? – Cardano

+0

答えを更新しましたが、あなたの質問でこれを尋ねたはずです –

関連する問題