- 1 -
Main은 따로 변경할 사항이 없다.
BorderPane - Center에 Pane 추가
Pane위에 위와같이
Label (fx:id - label)
Slider (fx:id - slider)
TextArea (fx:id - area1)
TextArea (fx:id - area2)
Controller class 설정, 저장 후 코드
슬라이더의 콩을 움직일 때 글자의 크기도 바로바로 늘어나고
텍스트 area 1, 2의 글자가 동시에 입력되게끔
package app; import java.net.URL; import java.util.ResourceBundle; import javafx.beans.binding.Bindings; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Label; import javafx.scene.control.Slider; import javafx.scene.control.TextArea; import javafx.scene.text.Font; public class MainController implements Initializable{ @FXML private Label label; @FXML private Slider slider; @FXML private TextArea area1; @FXML private TextArea area2; @Override public void initialize(URL location, ResourceBundle resources) { System.out.println("FXML Load Complete"); // 실시간 감시, 값을 확인 // 슬라이더 변경시 값을 확인 // 아래는 그대로 쓰되 대부분 자동생성 slider.setValue(12); // 글자 기본값 12랑 맞춰주기 slider.valueProperty().addListener(new ChangeListener<Number>() { // 스스로를 감시하여 값이 변경 될 때마다 특정 이벤트 발생 @Override public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { label.setFont(new Font(newValue.doubleValue())); } }); /* * 단방향 바인딩 * 대상1에 변경된 내용을 대상 2에 적용 * 대상2.xxxProperty().bind(대상1.XXXProperty)) * 양방향 바인딩 * 대상2. xxxProperty().bindBidrictional(대상1.xxxProperty) */ Bindings.bindBidirectional(area1.textProperty(), area2.textProperty()); } }
- 2 -
Main의 Scene scene = new Scene(root,200,200); 부분에 숫자를 200, 200로 하여 창 크기를 줄이고
Border의 Center에 Pane을 올리고
Pane 위에 Slider와 Text Field를 올린다.
Slider - fx:id : slider
TextField - fx:id : field
그리고 Controller class를 설정 후 코딩
이 프로그램은 슬라이더를 움직이면 그에 알맞은 텍스트가 출력되는 프로그램
Bindings를 통해서 하나로 묶는것
package app; import java.net.URL; import java.text.NumberFormat; import java.util.ResourceBundle; import javafx.beans.binding.Bindings; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Slider; import javafx.scene.control.TextField; public class MainController implements Initializable { @FXML private Slider slider; @FXML private TextField field; @Override public void initialize(URL arg0, ResourceBundle arg1) { System.out.println("FXML Load Complete"); slider.setValue(50); // field.setText("50"); field.setText(new Double(50).toString()); Bindings.bindBidirectional(field.textProperty(), slider.valueProperty(), NumberFormat.getNumberInstance()); // field, slider를 인자로 받음 } }
'JavaFX > 01.Node 추가' 카테고리의 다른 글
[JAVA FX]01-11.PieChart (0) | 2018.09.11 |
---|---|
[JAVA FX]01-10.Progress Bar, Progress Indicator, Thread (0) | 2018.09.11 |
[JAVA FX]01-08.Menu 바 추가 (0) | 2018.09.10 |
[JAVA FX]01-07.TreeView (0) | 2018.09.10 |
[JAVA FX]01-06.TableView, StringProperty, cellData (0) | 2018.09.10 |