본문 바로가기
자바

자바 자바fx 체크박스 checkBox [북붙따라하기]

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

checkBox 

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

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

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("checkBox 예제 입니다.");
		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.CheckBox?>
<?import javafx.scene.control.Label?>
<?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 layoutX="109.0" layoutY="61.0" style="-fx-border-color: black;" text="아래의 원하는 항목을 선택하세요.">
         <font>
            <Font size="24.0" />
         </font></Label>
      <Label layoutX="109.0" layoutY="220.0" style="-fx-border-color: red;" text="확인창" />
      <TextArea fx:id="textArea" layoutX="109.0" layoutY="245.0" prefHeight="130.0" prefWidth="383.0" />
      <CheckBox fx:id="checkBoxMoney" layoutX="106.0" layoutY="121.0" mnemonicParsing="false" onAction="#selectCheckBox" text="돈" />
      <CheckBox fx:id="checkBoxHonor" layoutX="204.0" layoutY="121.0" mnemonicParsing="false" onAction="#selectCheckBox1" text="명예" />
      <CheckBox fx:id="checkBoxPower" layoutX="307.0" layoutY="121.0" mnemonicParsing="false" onAction="#selectCheckBox2" text="권력" />
      <CheckBox fx:id="checkBoxNothing" layoutX="399.0" layoutY="121.0" mnemonicParsing="false" onAction="#selectCheckBox3" text="사랑" />
   </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.CheckBox;
import javafx.scene.control.TextArea;

public class MainHandler implements Initializable {
	


    @FXML
    private TextArea textArea;

    @FXML
    private CheckBox checkBoxMoney,checkBoxHonor,checkBoxPower,checkBoxNothing;


    @FXML
    void selectCheckBox(ActionEvent event) {
    	
    	//isSelected()는 선택 되었을 때 true를 돌려주는 메소드 입니다.
    	//보통 이메소드를 사용하여 입력 여부를 받고 데이터를 전달 받습니다.
    	if(checkBoxMoney.isSelected()) {
    		
    		//여기에 돈이 선택 되어졌을 때의 처리 구문을 작성 하시면 되겠습니다.
    		textArea.setText("돈 이선택 되었습니다.\n");
    		
    	}else {
    		textArea.setText("돈 이선택 취소!!!!  되었습니다.\n");

    	}
    }
    

    @FXML
    void selectCheckBox1(ActionEvent event) {
    	
    	//isSelected()는 선택 되었을 때 true를 돌려주는 메소드 입니다.
    	//보통 이메소드를 사용하여 입력 여부를 받고 데이터를 전달 받습니다.
    	if(checkBoxHonor.isSelected()) {
    		
    		//여기에 명예가 선택 되어졌을 때의 처리 구문을 작성 하시면 되겠습니다.
    		//textArea.setText("");
    		textArea.setText("명예  가선택 되었습니다.\n");    
    		
    	}else {
    		textArea.setText("명예가 선택 취소!!!!  되었습니다.\n");

    	}
    }

    

    @FXML
    void selectCheckBox2(ActionEvent event) {
    	
    	//isSelected()는 선택 되었을 때 true를 돌려주는 메소드 입니다.
    	//보통 이메소드를 사용하여 입력 여부를 받고 데이터를 전달 받습니다.
    	if(checkBoxPower.isSelected()) {
    		
    		//여기에 권력이 선택 되어졌을 때의 처리 구문을 작성 하시면 되겠습니다.
    		//textArea.setText("");
    		textArea.setText("권력  가선택 되었습니다.\n");  
    		
    	}else {
    		textArea.setText("권력이 선택 취소!!!!  되었습니다.\n");

    	}
    }
    
    

    @FXML
    void selectCheckBox3(ActionEvent event) {
    	
    	//isSelected()는 선택 되었을 때 true를 돌려주는 메소드 입니다.
    	//보통 이메소드를 사용하여 입력 여부를 받고 데이터를 전달 받습니다.
    	if(checkBoxNothing.isSelected()) {
    		
    		//여기에 사랑이 선택 되어졌을 때의 처리 구문을 작성 하시면 되겠습니다.
    		//textArea.setText("");
    		textArea.setText("천지에 쓸데 없는 것이 선택 되었습니다.\n");    		
    	}else {
    		textArea.setText("이제 정신을 차리게 !!!!  되었습니다.\n");

    	}
    }
    
	@Override
	public void initialize(URL arg0, ResourceBundle arg1) {


	}

}

 

위의 핸들러 예제는 체크박스 선택 시 하나의 체크박스마다
따로 처리 핸들러를 만들었는데 
그렇게 하지 않고 하나의 핸들러를 동시에 적용시켜도 
상관이 없습니다.

그 외에는 따로 설명할 것이 없는 것 같습니다.

 

예를 들어서 돈과 명예를 같이 선택했을 때의 처리를 하고 싶은 경우는 "&&" 를

if 문 안에서 사용하시면 되겠습니다.

예제입니다.)

    	if(checkBoxMoney.isSelected() && checkBoxHonor.isSelected()) {
    		
    		//여기에 과 명예가 같이 선택 되어졌을 때의 처리 구문을 작성 하시면 되겠습니다.
    		textArea.setText("돈 과 명예가 한번에 선택 되었습니다.\n");
    		
    	}

코딩을 해보면 checkBox가 은근히 손이 많이 가는 노가다 입니다.

선택의 경우가 10개가 넘어가고 서로 교차가 되면 좀 머리가 아픕니다.

부디 잘 견디어 내셔서 훌륭한 개발자가 되시길 바랍니다.

 

세상의 모든 것들은 그 자신을 위해서 존재한다.

 

 

728x90
반응형

댓글