본문 바로가기
22.05.24~22.11.16/Project

6월 project 2 <eclipse에 oracle DB 불러와서 javafx로 사원 연락처 조회 프로그램 만들기> : 조회, 추가, 수정, 삭제 기능 구현 2편

by 10월의끝 2022. 6. 28.

<root.fxml>

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

<?import javafx.scene.text.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane xmlns="http://javafx.com/javafx/8" 
			xmlns:fx="http://javafx.com/fxml/1" fx:controller="todaymission.Rootcontroller">
   <children>
      <AnchorPane layoutY="3.0" prefHeight="458.0" prefWidth="497.0">
         <children>
            <Label contentDisplay="TOP" layoutX="79.0" layoutY="29.0" prefHeight="27.0" prefWidth="340.0" 
            		text="Employees Infromation Program " textOverrun="CENTER_ELLIPSIS" underline="true">
               <font>
                  <Font name="Bell MT Bold" size="23.0" />
               </font>
            </Label>
            <Label layoutX="33.0" layoutY="112.0" text="▶ Name">
               <font>
                  <Font name="Bell MT Bold" size="18.0" />
               </font>
            </Label>
            <Label layoutX="33.0" layoutY="169.0" text="▶ Job ID">
               <font>
                  <Font name="Bell MT Bold" size="18.0" />
               </font>
            </Label>
            <Label layoutX="33.0" layoutY="229.0" text="▶ Email Address">
               <font>
                  <Font name="Bell MT Bold" size="18.0" />
               </font>
            </Label>
            <Label layoutX="33.0" layoutY="297.0" text="▶ Phone Number">
               <font>
                  <Font name="Bell MT Bold" size="18.0" />
               </font>
            </Label>
            <TextField fx:id="tf1" layoutX="140.0" layoutY="111.0" prefHeight="23.0" prefWidth="161.0" />
            <TextField fx:id="tf2" layoutX="140.0" layoutY="168.0" prefHeight="23.0" prefWidth="161.0" />
            <TextField fx:id="tf3" layoutX="52.0" layoutY="260.0" prefHeight="23.0" prefWidth="161.0" />
            <TextField fx:id="tf4" layoutX="52.0" layoutY="327.0" prefHeight="23.0" prefWidth="161.0" />
            <Button fx:id="bts1" blendMode="EXCLUSION" layoutX="269.0" layoutY="257.0" 
            		mnemonicParsing="false" prefHeight="29.0" prefWidth="77.0" text="Search">
               <font>
                  <Font name="Book Antiqua Bold" size="15.0" />
               </font>
            </Button>
            <Button fx:id="bti2" blendMode="EXCLUSION" layoutX="269.0" layoutY="309.0" 
            		mnemonicParsing="false" prefHeight="29.0" prefWidth="77.0" text="Insert">
               <font>
                  <Font name="Book Antiqua Bold" size="15.0" />
               </font>
            </Button>
            <Button fx:id="btu3" blendMode="EXCLUSION" layoutX="381.0" layoutY="257.0" 
            		mnemonicParsing="false" prefHeight="29.0" prefWidth="77.0" text="Update">
               <font>
                  <Font name="Book Antiqua Bold" size="15.0" />
               </font>
            </Button>
            <Button fx:id="btr4" blendMode="EXCLUSION" layoutX="381.0" layoutY="309.0" 
            		mnemonicParsing="false" prefHeight="29.0" prefWidth="77.0" text="Remove">
               <font>
                  <Font name="Book Antiqua Bold" size="15.0" />
               </font>
            </Button>
            <Button fx:id="btc5" blendMode="EXCLUSION" layoutX="381.0" layoutY="397.0" 
            		mnemonicParsing="false" prefHeight="29.0" prefWidth="77.0" text="Cancle">
               <font>
                  <Font name="Book Antiqua Bold" size="15.0" />
               </font>
            </Button>
         </children>
      </AnchorPane>
   </children>
</AnchorPane>

 

<Rootcontroller> 클래스 : 버튼과 텍스트필드 설정하기

import java.net.URL;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.ResourceBundle;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;

import todaymission.Address;
import todaymission.AddressDao;

public class Rootcontroller implements Initializable {
	@FXML private Button bts1;
	@FXML private Button bti2;
	@FXML private Button btu3;
	@FXML private Button btr4;
	@FXML private Button btc5;
	@FXML private TextField tf1;
	@FXML private TextField tf2;
	@FXML private TextField tf3;
	@FXML private TextField tf4;
	AddressDao ad;
	Address address;
	
	@Override
	public void initialize(URL location, ResourceBundle resources) {
		ad = new AddressDao();
		try {
			ad.connect();
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		bts1.setOnAction(e -> {
			try {
				handle1(e);
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		});
		bti2.setOnAction(e -> {
			try {
				handle2(e);
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		});
		btu3.setOnAction(e -> {
			try {
				handle3(e);
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		});
		btr4.setOnAction(e -> {
			try {
				handle4(e);
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		});
		btc5.setOnAction(e -> {
			try {
				handle5(e);
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		});
	}

	private void handle1(ActionEvent e) throws NumberFormatException, SQLException {
		Address address = ad.getAddress(tf1.getText());
		tf1.setText(address.emp_name);
		tf2.setText(address.emp_job);
		tf3.setText(address.emp_email);
		tf4.setText(address.emp_phone);
		String name = tf1.getText();
		System.out.println(name + " 사원의 정보를 조회합니다.");
	}

	private void handle2(ActionEvent e) throws SQLException {
		Address address = new Address(tf1.getText(), tf2.getText(), tf3.getText(), tf4.getText());
		ad.input(address);
		String name = tf1.getText();
		System.out.println(name + " 사원의 정보 추가를 완료했습니다.");

	}

	private void handle3(ActionEvent e) throws SQLException {
		Address address = new Address(tf1.getText(), tf4.getText());
		ad.update(address);
		String name = tf1.getText();
		System.out.println(name + " 사원의 정보 수정을 완료했습니다.");
	}

	private void handle4(ActionEvent e) throws SQLException {
		Address address = new Address(tf2.getText(), tf3.getText(), tf4.getText());
		ad.delete(address);
		String job = tf2.getText();
		System.out.println("[" + job + "] 부서의 사원 정보 삭제를 완료했습니다.");

	}

	private void handle5(ActionEvent e) {
		System.out.println("프로그램을 종료합니다.");

	}
}

 

<Appmain> 클래스 : 모든 기능을 구현하는 메인 클래스

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 {
	public static void main(String[] args) {
		launch(args);
	}
	
	@Override
	public void start(Stage ps) throws Exception {
		Parent root = FXMLLoader.load(getClass().getResource("root.fxml"));
		Scene sc = new Scene(root);
		ps.setTitle("사원 연락처 조회");
		ps.setScene(sc);
		ps.show();
	}
}

 

 

<실행 결과>