본문 바로가기
자바

자바 자바fx Slider 슬라이더 [북붙따라하기]

by 세상 모든 것 들은 그 자신을 위해 존재한다. 2021. 1. 3.

Slider

사용 예제 ) 코드를 복붙 하여 실행해 보시기 바랍니다.

설명은  주석과 코드 아랫부분에  있습니다.

1. 메인 파일 예제입니다.(title 만 다르고 내용이 거의 변하지 않습니다.)

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class AppMain extends Application {
	@Override
	public void start(Stage primaryStage) throws Exception {
		Parent root = (Parent)FXMLLoader.load(getClass().getResource("main.fxml"));
		Scene scene = new Scene(root);
		
		primaryStage.setTitle("슬라이드 예제 입니다.");
		primaryStage.setScene(scene);
		primaryStage.show();
		primaryStage.setAlwaysOnTop(true);
	}
	
	public static void main(String[] args) {
		launch(args);
	}
}

 

2. main.fxml  파일 예제입니다.

그대로 복붙 하여 테스트해보시면 됩니다.

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Slider?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="MainHandler">
   <children>
      <Label alignment="CENTER" layoutX="24.0" layoutY="24.0" prefHeight="30.0" prefWidth="550.0" style="-fx-border-color: black;" text="아래의 슬라이더를 움직여 보세요.">
         <font>
            <Font size="24.0" />
         </font></Label>
      <Label layoutX="27.0" layoutY="259.0" style="-fx-border-color: red;" text="확인창" />
      <TextArea fx:id="textArea" layoutX="24.0" layoutY="285.0" prefHeight="89.0" prefWidth="550.0" />
      <Slider fx:id="sliderH" layoutX="46.0" layoutY="147.0" prefHeight="14.0" prefWidth="212.0" />
      <Slider fx:id="sliderV" layoutX="504.0" layoutY="91.0" orientation="VERTICAL" />
   </children>
</AnchorPane>

 

3. MainHandler.java 핸들러 파일입니다.

그대로 복붙 하여 테스트하시길 바랍니다.

import java.net.URL;
import java.util.ResourceBundle;

import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Slider;
import javafx.scene.control.TextArea;

public class MainHandler implements Initializable {

	@FXML
	private TextArea textArea;

	//가로 슬라이더
	@FXML
	private Slider sliderH;

	//세로 슬라이더
	@FXML
	private Slider sliderV;

	@Override
	public void initialize(URL location, ResourceBundle resources) {

		// 가로 슬라이더 설정
		// 슬라이더의 움직임을 감지 하여 그 값을 돌려 주는 부분
		//따로 손델 부분은 없다.안쪽에만 원하는 코드를 작성 하면 됩니다.
		sliderH.valueProperty().addListener(new ChangeListener<Number>() {

			@Override
			public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {

				//여기부터 원하는 코드를 넣어서 응용을 해주면 됩니다.
				//소수로 값을 받아 오므로 첫번째 자리에서 반올림 해주는 round() 로 정수로 받아온다.
				int nImsi = (int) Math.round(sliderH.getValue());

				//받아온 정수를 현상황에 맞게 값을 만들어 준다 . 여기서는 곱하기 100을 해준다.
				String strNimsi = "" + (nImsi * 100);

				//실시간으로 반영 되는 값을 알리창에 출력하낟.
				textArea.setText("가로 슬라이더의 값 : "+strNimsi);
			}
		});
		
		//초기 설정값을 정해준다.
		sliderH.setValue(50);
		
		// 세로 슬라이더 설정
		// 슬라이더의 움직임을 감지 하여 그 값을 돌려 주는 부분
		//따로 손델 부분은 없다.안쪽에만 원하는 코드를 작성 하면 됩니다.
		sliderV.valueProperty().addListener(new ChangeListener<Number>() {

			@Override
			public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {

				//여기부터 원하는 코드를 넣어서 응용을 해주면 됩니다.
				//소수로 값을 받아 오므로 첫번째 자리에서 반올림 해주는 round() 로 정수로 받아온다.
				int nImsi = (int) Math.round(sliderV.getValue());

				//받아온 정수를 현상황에 맞게 값을 만들어 준다 . 여기서는 곱하기 100을 해준다.
				String strNimsi = "" + (nImsi * 100);

				//실시간으로 반영 되는 값을 알리창에 출력하낟.
				textArea.setText("세로 슬라이더의 값 : "+strNimsi);
			}
		});
		
		//초기 설정값을 정해준다.
		sliderV.setValue(50);

	}

}

 

 

정형화된 표현이라 따로 수정할 곳이 많지 않습니다.

예제에서 제가 표시해둔 곳부터 사용할 코드를 적용 시키면 

되겠습니다.

변수로 저장했다가 그 값을 전달하면 됩니다.

 

반올림으로 사용한  Math.round( ) 메서드입니다.

//여기부터 원하는 코드를 넣어서 응용을 해주면 됩니다.
//소수로 값을 받아 오므로 첫번째 자리에서 반올림 해주는 
//round() 로 형변환을 해서 정수로 받아온다.
int nImsi = (int) Math.round(sliderH.getValue());

그외 같이 쓰이는 메소드 입니다.
Math.ceil(); //올림 기능을 하는 메소드 입니다.
Math.floor();//버림 기능을 하는 메소드 입니다.

 

초기 설 라이드의 위치 값을 정해주는 메소드 입니다.

//초기 설정값을 정해준다
sliderH.setValue(50);

값이 50이라 가운데에서부터 시작합니다.

 

아래는 실행 화면 입니다.

참고 하시기 바랍니다.

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

댓글