티스토리 뷰
들어가며
- JavaFX Spinner를 사용하게 되면 FXML 상에서 바로 Spinner의 값을 세팅해주면 편할 때가 있습니다.
- 변하지 않는 정적인 데이터를 사용하는 경우 적합
- 이때 간단하게 FXML에서 스피너의 데이터를 세팅하는 방법에 대해서 알아보겠습니다.
- Spinner의 사용법에 대한 자세한 내용은 아래 포스팅을 참고해주세요
설정 방법
- FXML상에서 Spinner의 데이터 세팅 방법은 크게 두가지로 나뉩니다.
- Value Factory에 대한 자세한 내용은 위에서 언급한 "Spinner 사용법" 포스팅을 참고바랍니다.
- 간단하게 이야기 하자면 Spinner의 세팅할 데이터 시퀀스를 정의하는 클래스임
ValueFactory를 사용하여 세팅
- ValueFactory를 사용하는 방식은 아래와 같이 Spinner안에 <valueFactory> 태그를 이용하여 정의할 수 있습니다.
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.util.* ?>
<?import javafx.scene.*?>
<?import javafx.scene.control.* ?>
<?import javafx.scene.layout.* ?>
<BorderPane xmlns:fx="http://javafx.com/fxml/1" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.40" fx:controller="demoapp.DemoController">
<center>
<Spinner fx:id="spinner" BorderPane.alignment="CENTER" >
<valueFactory>
<SpinnerValueFactory.IntegerSpinnerValueFactory min="0" max="10"/>
</valueFactory>
</Spinner>
</center>
</BorderPane>
ValueFactory를 사용하지 않고 세팅
- ValueFactory를 사용하는 방식은 아래와 같이 Spinner 태그에 직접 min, max 값을 설정해줄 수 있습니다.
- (참고)FXML에서는 사용하지 않았지만 Spinner 내부에서는 min, max 값을 가지고 Value Factory를 생성함
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.util.* ?>
<?import javafx.scene.*?>
<?import javafx.scene.control.* ?>
<?import javafx.scene.layout.* ?>
<BorderPane xmlns:fx="http://javafx.com/fxml/1" fx:controller="demoapp.DemoController" xmlns="http://javafx.com/javafx/8.0_40" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" >
<center>
<fx:define>
<Integer fx:id="min" fx:value="0"/>
<Integer fx:id="max" fx:value="10"/>
</fx:define>
<Spinner fx:id="spinner" BorderPane.alignment="CENTER" min="$min" max="$max">
</Spinner>
</center>
</BorderPane>
예제
- 위 방법을 실제로 예제 프로그램을 통해서 구현해보겠습니다.
- 예제에서는 설정 방법 두가지를 동시에 구현하여 비교해보겠습니다.
SpinnerInitialized.fxml
<fx:root style="-fx-background-color: #A2A5AC;" type="AnchorPane" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" stylesheets="@../fx.css" prefWidth="400" prefHeight="250">
<VBox AnchorPane.bottomAnchor="0" AnchorPane.rightAnchor="0" AnchorPane.leftAnchor="0" AnchorPane.topAnchor="0" alignment="CENTER" spacing="20">
<HBox alignment="CENTER">
<Label text="Spinner with factory: "/>
<Spinner fx:id="spinnerWithFactory" styleClass="my-spinner">
<valueFactory>
<SpinnerValueFactory.IntegerSpinnerValueFactory min="0" max="10" initialValue="5" amountToStepBy="1"/>
</valueFactory>
</Spinner>
</HBox>
<HBox alignment="CENTER">
<Label text="Spinner without factory: "/>
<fx:define>
<Integer fx:id="min" fx:value="0"/>
<Integer fx:id="max" fx:value="10"/>
<Integer fx:id="amount" fx:value="1"/>
</fx:define>
<Spinner fx:id="spinnerWithoutFactory" min="$min" max="$max" amountToStepBy="$amount" styleClass="my-spinner"/>
</HBox>
</VBox>
</fx:root>
SpinnerInitializedController.java
public class SpinnerInitializedController extends AnchorPane {
@FXML
private Spinner<Integer> spinnerWithFactory;
@FXML
private Spinner<Double> spinnerWithoutFactory;
public SpinnerInitializedController() {
FxUiUtil.initializeFont();
FxUiUtil.loadFxml(this);
}
}
SpinnerInitalizedControllerTest.java
public class SpinnerInitalizedControllerTest extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
SpinnerInitializedController controller = new SpinnerInitializedController();
primaryStage.setScene(new Scene(controller));
primaryStage.setTitle("Spinner Initialized Test");
primaryStage.show();
}
@Test
public void test() {
launch();
}
}
결과화면
관련글
반응형
'프로그래밍 > JavaFX' 카테고리의 다른 글
[JavaFX] FXML상에서 Button에 이미지 입히는 방법 (0) | 2020.07.06 |
---|---|
[JavaFX] 구분선 Divider(Separator) 추가 방법 (0) | 2020.07.03 |
(JavaFX) JavaFX ScrollBar 개념 및 사용법 (0) | 2020.05.20 |
(JavaFX) JavaFX Spinner 개념 및 사용법 (0) | 2020.05.19 |
(JavaFX) JavaFX ListView FXML상에서 데이터 초기화 방법 (0) | 2020.05.12 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 배낭여행
- JavaFX Window Close
- TableView
- 방통대 과제물
- 일본 여행
- JavaFX
- JavaFX 종료
- 일본여행
- java
- 일본 배낭여행
- Java UI
- springboot
- 이펙티브 자바
- JavaFX Table View
- effectivejava
- intelij
- 스프링부트
- 텐트
- 자바
- 일본 자전거 여행
- 이펙티브자바
- 자전거
- 배낭 여행
- 자전거 여행
- effective java
- JavaFX 테이블뷰
- 인텔리제이
- windows
- 이펙티브
- git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함