ToggleButton
사용 예제 ) 코드를 복붙 하여 실행해 보시기 바랍니다.
설명은 주석과 코드 아랫부분에 있습니다.
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.TextArea?>
<?import javafx.scene.control.ToggleButton?>
<?import javafx.scene.control.ToggleGroup?>
<?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" style="-fx-border-color: black;" 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: blue;" text="아래의 버튼을 선택해 보세요.">
<font>
<Font size="24.0" />
</font></Label>
<Label layoutX="27.0" layoutY="259.0" style="-fx-border-color: green;" text="확인창" />
<TextArea fx:id="textArea" layoutX="24.0" layoutY="285.0" prefHeight="89.0" prefWidth="550.0" style="-fx-border-color: green;" />
<ToggleButton fx:id="toggleButton1" layoutX="84.0" layoutY="104.0" mnemonicParsing="false" onAction="#selectToggleButton" prefHeight="23.0" prefWidth="78.0" text="첫번째">
<toggleGroup>
<ToggleGroup fx:id="toggleGroup1" />
</toggleGroup>
</ToggleButton>
<ToggleButton fx:id="toggleButton2" layoutX="179.0" layoutY="104.0" mnemonicParsing="false" onAction="#selectToggleButton" prefHeight="23.0" prefWidth="78.0" text="두번째" toggleGroup="$toggleGroup1" />
<ToggleButton fx:id="toggleButton3" layoutX="274.0" layoutY="104.0" mnemonicParsing="false" onAction="#selectToggleButton" prefHeight="23.0" prefWidth="78.0" text="세번째" toggleGroup="$toggleGroup1" />
</children>
</AnchorPane>
3. MainHandler.java 핸들러 파일입니다.
그대로 복붙 하여 테스트하시길 바랍니다.
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TextArea;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
public class MainHandler implements Initializable {
@FXML
private TextArea textArea;
@FXML
private ToggleGroup toggleGroup1;
@FXML
private ToggleButton toggleButton1;
@FXML
private ToggleButton toggleButton2;
@FXML
private ToggleButton toggleButton3;
@FXML
void selectToggleButton(ActionEvent event) {
//첫번재 토글버튼이 선택되면 토글버튼의 이름을 가지고 옵니다.
if (toggleButton1.isSelected()) {
// 버튼1이 선택 되었을 때 버튼의 이름을 문자열로 저장한다.
String strName = toggleButton1.getText();
// 버튼그룹에서 얻은 값을 알림창에 출력한다.
textArea.setText(" 선택된 버튼의 이름은 : " + strName);
} else if (toggleButton2.isSelected()) {
// 버튼2이 선택 되었을 때 버튼의 이름을 문자열로 저장한다.
String strName = toggleButton2.getText();
// 버튼그룹에서 얻은 값을 알림창에 출력한다.
textArea.setText(" 선택된 버튼의 이름은 : " + strName);
} else if (toggleButton3.isSelected()) {
// 버튼3이 선택 되었을 때 버튼의 이름을 문자열로 저장한다.
String strName = toggleButton3.getText();
// 버튼그룹에서 얻은 값을 알림창에 출력한다.
textArea.setText(" 선택된 버튼의 이름은 : " + strName);
}
}
@Override
public void initialize(URL location, ResourceBundle resources) {
}
}
토글 버튼은 각각의 버튼의 속성에 같은 그룹으로 사용할 그룹명을 넣어주면 된다.(씬 빌더)
프로 그래밍 코딩은 리슨너를 사용할 수도 있지만 초기 실행에 부담이 없는 핸들러 처리를 해주면
더 좋다고 생각해서 주로 이렇게 사용합니다.
전체적인 사용법은 radio버튼과 비슷합니다.
거의 같다고 봐야 되겠습니다.
아래는 프로그램 실행 모습입니다. 참고 하시기 바랍니다.
728x90
반응형
'자바' 카테고리의 다른 글
자바 자바fx 리스트뷰 ListView [북붙따라하기] (0) | 2021.01.04 |
---|---|
자바 자바fx 날짜 색깔 DatePicker , ColorPicker [북붙따라하기] (0) | 2021.01.04 |
자바 자바fx Slider 슬라이더 [북붙따라하기] (0) | 2021.01.03 |
자바 자바fx radioButton 라디오버튼 [북붙따라하기] (0) | 2021.01.03 |
자바 자바fx 체크박스 checkBox [북붙따라하기] (0) | 2021.01.02 |
댓글