- 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를 인자로 받음
	}
	
}








+ Recent posts