본문 바로가기
자바

자바 javafx comboBox [북붙따라하기]

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

comboBox : 여러 가지 항목 중에 하나를 선택하는 콤보 박스입니다.

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

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

 

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("combobox 예제 입니다.");
		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.Button?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.layout.AnchorPane?>

<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>
      <Button fx:id="button1" layoutX="300.0" layoutY="137.0" mnemonicParsing="false" onAction="#selectButton1" text="입력" />
      <Label layoutX="109.0" layoutY="106.0" text="이름을 선택하세요." />
      <Label layoutX="109.0" layoutY="220.0" text="확인창" />
      <ComboBox fx:id="combobox1" layoutX="109.0" layoutY="137.0" prefWidth="150.0" />
      <TextArea fx:id="textArea" layoutX="109.0" layoutY="245.0" prefHeight="130.0" prefWidth="383.0" />
   </children>
</AnchorPane>

 

 

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

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

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

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;

public class MainHandler implements Initializable {
	


    @FXML	
    private Button button1;

    @FXML
    private TextField textField1;

    @FXML
    private ComboBox combobox1;

    @FXML
    private TextArea textArea;


	@Override
	public void initialize(URL arg0, ResourceBundle arg1) {
		// 이름선택 콤보박스 부분
		// 콤보박스에 표시될 이름을 배열로 만들어 준다.
		String[] strArrList = {"김철수","홍길동","빌게이트","이사람","김삿갓","진돌이"};

		//콤보 박스에 배열의 요소를 위치 시킨다.
		ObservableList<String> fxComboNameList = FXCollections.observableArrayList(strArrList);
		combobox1.setItems(fxComboNameList);

	}
    
    
    @FXML
    void selectButton1(ActionEvent event) {
    	
    	//콤보박스를 선택하지 않고 버튼을 누르면 null point error 가 나는것을 
    	// 방지 하기 위해서 예외를 설정 합니다.
    	try {
    		
    		//버튼을 누를때 선택 되어진 콤보 박스의 아이템을 문자열로 받는 부분
        	//혹시 숫자를 사용해야 할 경우에는 숫자로 변환 해야 합니다.
    		String strName = combobox1.getSelectionModel().getSelectedItem().toString();
    		
    		//위에서 선택된 아이템의 값을 아래의 알림창에 출력한다.
        	textArea.setText("선택된 항목 : "+strName);
        	
    	}catch(Exception e) {
    		System.out.println("예외 발생 : "+e.getLocalizedMessage());
    	}
    	
    	
    }


}

 

textArea 항목은 textField는 한 줄만 표시 할 수 있는 반면에 

여러 줄을 표시 할수 있는 찹입니다.

getText( ) 메서드를 사용하면 값을 입력받을 수 있습니다.

대부분 많은 양을 입력받을 때 사용합니다.

//위에서 선택된 아이템의 값을 아래의 알림창에 출력한다.
textArea.setText("선택된 항목 : "+strName);

 

완성 후 실행했을 때의 모습니다.

참고하여 실행해 보면 되겠습니다.

 

아래는 실전 예제입니다.

	@Override
	public void initialize(URL url, ResourceBundle rb) {

///////////////////안보이게 하는 버튼들.....................................................
		btnNoticeEdit.setVisible(false);// 공지사항 등록 완료버튼 안보이게함
		btnEdit.setVisible(false); // 사원등록 수정완료 버튼 안보이게함
		btnPayment.setVisible(false);// 결제버튼 안보이게 함
		imageDojang.setVisible(false);// 결재 도장표시를 안보이게함
		btnPayCancel.setVisible(false);// 결재 취소 버튼이 안보이게함
		btnPayEdit.setVisible(false);// 결재 수정 요청버튼 안보이게함
		btnEditOK.setVisible(false);
		btnAlertOK.setVisible(false);// 수정 전송완료 버튼 안보이게 함
		imageEdit.setVisible(false);// 수정 전송완료 버튼 안보이게 함
		taOutputContent.setText(">>> 읽어 주세요.\n\n" + "아직 기능이 완전하지 못합니다.\n"  + "많은 의견 부탁드립니다.\n\n\n" + "항상 건강 하세요. ");
/////////////////////////////////// combobox 실행부분////////////////////////////////////////////////////////////////
		ASvrReadFile vsvrReadFile = new ASvrReadFile(); // 서버에 있는 파일을 읽어 오기 위한 부분
		AStringSplit vstrSplit = new AStringSplit();

		vsvrReadFile.rcvFromServerFile("idchk");
		String[] strArrIdchk = vstrSplit.vstrSplit(vsvrReadFile.strRcvMsg, "\n");// 받은 사원파일을 문자열 배열로 만든다.
		//System.out.println("strArrIdchk : "+strArrIdchk);
		String[] strName = new String[strArrIdchk.length];
		for(int i=0; i<strArrIdchk.length; i++) {
			//System.out.println("1strArrIdchk : "+strArrIdchk);
			String[] strArrLast = vstrSplit.vstrSplit(strArrIdchk[i],":");
			//System.out.println("2strArrIdchk : "+strArrIdchk);
			strName[i] = strArrLast[0]+strArrLast[1];
		}

		vsvrReadFile.rcvFromServerFile("siter");
		String[] strArrSiter = vstrSplit.vstrSplit(vsvrReadFile.strRcvMsg, "\n"); // 받은 거래처파일을 문자열 배열로 만든다.

////////////////////////////////////코보박스 부분////////////////////////////////////////////////////////////////		
		// 거래처 콤보박스 리스트
		ObservableList<String> fxComboSiteList = FXCollections.observableArrayList(strArrSiter);
		comboBoxSite.setItems(fxComboSiteList);

		// combobox 실행부분
		ObservableList<String> fxComboNameList = FXCollections.observableArrayList(strName);
		comboBoxName.setItems(fxComboNameList);

/////////////////////////////////// 테이블뷰 실행부분//////////////////////////////////////////////
		TableColumn tvCol1 = tvMain.getColumns().get(0); // VTableData의 반환되는 변수 이름과 똑 같아야 된다.
		tvCol1.setCellValueFactory(new PropertyValueFactory("strNum"));
		tvCol1.setStyle("-fx-alignment:CENTER;");

		TableColumn tvCol2 = tvMain.getColumns().get(1); // VTableData의 반환되는 변수 이름과 똑 같아야 된다.
		tvCol2.setCellValueFactory(new PropertyValueFactory("strId"));

		TableColumn tvCol3 = tvMain.getColumns().get(2);
		tvCol3.setCellValueFactory(new PropertyValueFactory("strDate"));

		TableColumn tvCol4 = tvMain.getColumns().get(3);
		tvCol4.setCellValueFactory(new PropertyValueFactory("strOk"));
		// tvCol3.setStyle("-fx-alignment:CENTER;");

		TableColumn tvCol5 = tvMain.getColumns().get(4);
		tvCol5.setCellValueFactory(new PropertyValueFactory("strWait"));
		// tvCol4.setStyle("-fx-alignment:CENTER;");

	}
728x90
반응형

댓글