2016-10-31 3 views
0

나는 훈련 목적으로 간단한 텍스트 편집기를 만들고 있습니다. 나는 MS Word 에서처럼 TextArea에서 텍스트 입력을 가운데에 놓을 버튼을 만들고 싶습니다. FXML로 버튼을 가지고 있지만, TextArea 오브젝트에 어떤 메소드를 사용해야하는지 모르겠다. setStyle() 또는 getChild()을 시도했지만 어느 것도 작동하지 않았다.JavaFX에서 TextArea의 내용 맞추기

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

TextArea

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

그게 전부 FXML

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

내 버튼 한게 컨트롤러의 방법 이잖아.

+0

내가 넷빈즈는 IDE입니다 넷빈즈 –

+0

당신이 scenebuilder 사용하고,하지만 난 알고 싶어처럼 당신이 scenebuiler를 사용했다 fx 응용 프로그램의 스타일을 지정하기 위해 응답을주었습니다. 도움이되는지 확인하십시오. – Cardano

+0

을 사용하고 –

답변

2

텍스트 영역의 텍스트 노드에 -fx-text-alignment property을 설정해야합니다. 다음 외부 CSS 파일에 당신이 그런

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

을 수행 할 수 있습니다 할 수

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

과 :

동적으로이 작업을 수행하는 가장 좋은 방법은 텍스트 영역에 대한 사용자 정의 CSS의 pseudoclass을 정의하는 것입니다

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가 아니고, 이것을 자바 코드에 어떻게 추가할까요? – Cardano

+0

답변이 업데이트되었지만 질문에이 질문을해야합니다. –