공부/자바(JAVA)

DB연동 프로젝트(Java Swing)

도도-도윤 2017. 10. 15. 20:59

DB연동 프로젝트(Java Swing)


데이터베이스 프로젝트입니다.


 개발 언어

 Java

 데이터베이스

 MySQL

 운영체제

 해당 없음



1. UML Design - Class Diagram




 UML - Classes Diagram




2. 정보모델링 설계 - Information Design



 Project - 테이블 설계(DB 설계)




3. 사용자 인터페이스 설계 - User Interface Design



 Login.java / 로그인 구현




 Main.java / 메인 구현



 Main.java / 메뉴(파일)




 Main.java / 메뉴(거래처)





 Main.java / 메뉴(프로젝트)




 ProjectRegisterFrm.java




 ProjectManageFrm.java




 UserRegisterFrm.java




4. 코드(Code)


 package Program;

 import java.awt.EventQueue;

 import JWindow.LoginFrm;

 

 public class Start{

        public static void main(String[] args) {
  
                EventQueue.invokeLater(new Runnable() {
                     public void run() {
                          try {
                                LoginFrm frame = new LoginFrm();
                                frame.setVisible(true);
                          } catch (Exception e) {
                                e.printStackTrace();
                          }
                     }
            });
       }
 
}


 Start.java



/*
 * Created Date: 2017-10-15
 * Login.java
 * 작성자: 도도(dodo) - rabbit.white@daum.net
 */

package JWindow;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Toolkit;
import javax.swing.border.LineBorder;
import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import java.awt.Font;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JPasswordField;

public class LoginFrm extends JFrame {

 private JPanel contentPane;
 private JTextField txtID;
 private JPasswordField txtPwd;
 private JButton btnOK;

 /**
  * Create the frame.
  */
 public LoginFrm() {
  
  setResizable(false);
  
  Dimension frameSize = getSize();
  // 모니터 크기
  Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
  // (모니터화면 가로 - 프레임화면 가로) / 2, (모니터화면 세로 - 프레임화면 세로) / 2
  setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
  
  setType(Type.POPUP);
  setIconImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\jungdy\\Desktop\\JavaSwing\\logo-icons.png"));
  setTitle("로그인 - 종합정보시스템");
  
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setBounds(100, 100, 521, 216);
  contentPane = new JPanel();
  contentPane.setBackground(Color.WHITE);
  contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  setContentPane(contentPane);
  contentPane.setLayout(null);
  
  JPanel panel = new JPanel();
  panel.setBackground(Color.WHITE);
  panel.setBorder(new LineBorder(Color.GRAY));
  panel.setBounds(12, 10, 189, 156);
  contentPane.add(panel);
  panel.setLayout(null);
  
  JLabel lblNewLabel = new JLabel("");
  lblNewLabel.setIcon(new ImageIcon("C:\\Users\\jungdy\\Desktop\\JavaSwing\\logo-icons.png"));
  lblNewLabel.setBounds(69, 54, 51, 48);
  panel.add(lblNewLabel);
  
  JPanel panel_1 = new JPanel();
  panel_1.setBackground(Color.WHITE);
  panel_1.setBounds(213, 57, 281, 71);
  contentPane.add(panel_1);
  panel_1.setLayout(null);
  
  JLabel label = new JLabel("\uC544\uC774\uB514");
  label.setFont(new Font("돋움", Font.PLAIN, 12));
  label.setBounds(12, 13, 57, 15);
  panel_1.add(label);
  
  txtID = new JTextField();
  txtID.setFont(new Font("돋움", Font.PLAIN, 12));
  txtID.setBounds(82, 10, 188, 21);
  panel_1.add(txtID);
  txtID.setColumns(10);
  
  JLabel label_1 = new JLabel("\uBE44\uBC00\uBC88\uD638");
  label_1.setFont(new Font("돋움", Font.PLAIN, 12));
  label_1.setBounds(12, 44, 57, 15);
  panel_1.add(label_1);
  
  txtPwd = new JPasswordField();
  txtPwd.setBounds(82, 38, 188, 21);
  panel_1.add(txtPwd);
  
  JLabel label_2 = new JLabel("\uB85C\uADF8\uC778");
  label_2.setFont(new Font("돋움", Font.BOLD, 14));
  label_2.setBounds(213, 32, 281, 15);
  contentPane.add(label_2);
  
  btnOK = new JButton("\uB85C\uADF8\uC778");
  btnOK.addActionListener(new ActionListener() {
   
   public void actionPerformed(ActionEvent arg0) {
    
            if ( txtID.getText().equals("hello") && txtPwd.getText().equals("hello") ) {
                 MainFrm mainFrm = new MainFrm();
                 dispose();
            }
            else
            {
                 JOptionPane.showMessageDialog(null, "로그인에 실패하였습니다.");
            }
        }
  });
  
        btnOK.setFont(new Font("돋움", Font.PLAIN, 12));
        btnOK.setBounds(213, 143, 281, 23);
        contentPane.add(btnOK);
    }
 
}

 LoginFrm.java



/*
 * 2017-08-31
 * Main.java
 * Created By Dodo
 */

package JWindow;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;

import JDBC.DBMS;
import JDBC.DML;

import java.sql.*;

import java.awt.GridLayout;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Calendar;

import javax.swing.JTextPane;
import javax.swing.JTabbedPane;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JTextField;
import javax.swing.JScrollBar;
import javax.swing.JSlider;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import javax.swing.JButton;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Font;
import java.awt.FlowLayout;
import java.awt.Color;
import javax.swing.JSplitPane;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.event.WindowStateListener;
import java.awt.event.WindowEvent;
import javax.swing.border.LineBorder;

public class MainFrm extends JFrame {

 private JPanel contentPane;
 private JMenuBar menuBar;
 
 public MainFrm() {
  setIconImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\jungdy\\Desktop\\JavaSwing\\logo-icons.png"));
  
  setTitle("\uC815\uBCF4\uC2DC\uC2A4\uD15C - \uB3C4\uB3C4(Dodo)");
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setBounds(100, 100, 1024, 700);
  
  menuBar = new JMenuBar();
  setJMenuBar(menuBar);
  
  JMenu mnFile = new JMenu("파일");
  mnFile.setFont(new Font("돋움", Font.PLAIN, 12));
  menuBar.add(mnFile);
  
  JMenuItem mntmExit = new JMenuItem("종료");
  mntmExit.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    dispose();
   }
  });
  mntmExit.setFont(new Font("돋움", Font.PLAIN, 12));
  mnFile.add(mntmExit);
  
  JMenu mnCustomer = new JMenu("고객");
  mnCustomer.setFont(new Font("돋움", Font.PLAIN, 12));
  menuBar.add(mnCustomer);
  
  JMenuItem mntmCustomerRegister = new JMenuItem("등록");
  mntmCustomerRegister.setFont(new Font("돋움", Font.PLAIN, 12));
  mnCustomer.add(mntmCustomerRegister);
  
  JMenuItem mntmCustomerManage = new JMenuItem("관리");
  mntmCustomerManage.setFont(new Font("돋움", Font.PLAIN, 12));
  mnCustomer.add(mntmCustomerManage);
  
  JMenu mnProject = new JMenu("\uD504\uB85C\uC81D\uD2B8");
  mnProject.setFont(new Font("돋움", Font.PLAIN, 12));
  menuBar.add(mnProject);
  
  JMenuItem mntmProjectRegister = new JMenuItem("\uB4F1\uB85D");
  mntmProjectRegister.setFont(new Font("돋움", Font.PLAIN, 12));
  
  mntmProjectRegister.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent arg0) {
                 EventQueue.invokeLater(new Runnable() {
                           public void run() {
                           try {
                                ProjectRegisterFrm frame = new ProjectRegisterFrm();
                                frame.setVisible(true);
                           } catch (Exception e) {
                                e.printStackTrace();
                           }
                }
        });
   }
  });
  
  mnProject.add(mntmProjectRegister);
  
  JMenuItem mntmProjectManage = new JMenuItem("\uAD00\uB9AC");
  
  mntmProjectManage.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent arg0) {
    
             EventQueue.invokeLater(new Runnable() {
                     public void run() {
                           try {
                                ProjectManageFrm frame = new ProjectManageFrm();
                                frame.setVisible(true);
                           } catch (Exception e) {
                                e.printStackTrace();
                           }
                     }
            });
       }
  });
  
  mntmProjectManage.setFont(new Font("돋움", Font.PLAIN, 12));
  mnProject.add(mntmProjectManage);
  
  JMenu menu = new JMenu("\uC0AC\uC6A9\uC790");
  menu.setFont(new Font("돋움", Font.PLAIN, 12));
  menuBar.add(menu);
  
  JMenuItem mntmUserRegister = new JMenuItem("\uB4F1\uB85D");


  mntmUserRegister.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent arg0) {
                EventQueue.invokeLater(new Runnable() {
                       public void run() {
                          try {
                                   UserRegisterFrm frame = new UserRegisterFrm();
                                   frame.setVisible(true);
                          } catch (Exception e) {
                                   e.printStackTrace();
                          }
                      }
               });
         }
  });


  mntmUserRegister.setFont(new Font("돋움", Font.PLAIN, 12));
  menu.add(mntmUserRegister);
  
  JMenuItem mntmUserManage = new JMenuItem("\uAD00\uB9AC");


  mntmUserManage.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    
     EventQueue.invokeLater(new Runnable() {
            public void run() {
                  try {
                       UserManageFrm frame = new UserManageFrm();
                       frame.setVisible(true);
                  } catch (Exception e) {
                       e.printStackTrace();
                  }
           }
    });
    
   }
  });
  
  mntmUserManage.setFont(new Font("돋움", Font.PLAIN, 12));
  menu.add(mntmUserManage);
  
  JMenuItem mntmGroupManage = new JMenuItem("\uADF8\uB8F9");
  mntmGroupManage.setFont(new Font("돋움", Font.PLAIN, 12));
  menu.add(mntmGroupManage);
  contentPane = new JPanel();
  contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  setContentPane(contentPane);
  
  contentPane.setLayout(null);
  
  JPanel footer_panel = new JPanel();
  footer_panel.setBackground(Color.DARK_GRAY);
  footer_panel.setBorder(new LineBorder(Color.GRAY));
  footer_panel.setBounds(0, getHeight() - 80, getWidth(), 20);
  contentPane.add(footer_panel);
  footer_panel.setLayout(null);
  
  JLabel lblCreateDate = new JLabel("New label");
  lblCreateDate.setFont(new Font("돋움", Font.BOLD, 12));
  lblCreateDate.setForeground(Color.WHITE);
  lblCreateDate.setBounds(106, 0, 242, 20);
  
  Calendar cal = Calendar.getInstance();
  lblCreateDate.setText(cal.getTime().toString());
  
  footer_panel.add(lblCreateDate);
  
  JLabel label = new JLabel("\uCD5C\uCD08\uC811\uC18D\uC2DC\uAC04");
  label.setFont(new Font("돋움", Font.BOLD, 12));
  label.setForeground(Color.WHITE);
  label.setBounds(12, 3, 100, 15);
  footer_panel.add(label);


  addWindowStateListener(new WindowStateListener() {
           public void windowStateChanged(WindowEvent arg0) {
           footer_panel.setBounds(0, getHeight() - 80, getWidth(), 20);
        }
  });
  
  setVisible(true);
  }
}

MainFrm.java



/*
 * Created Date: 2017-10-15
 * ProjectRegisterFrm.java
 * 작성자: 도도(dodo) - rabbit.white@daum.net
 */

package JWindow;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import java.awt.Font;
import java.awt.Toolkit;
import javax.swing.border.LineBorder;
import javax.swing.table.DefaultTableModel;

import JDBC.DBMS;
import JDBC.DML;

import java.awt.Color;
import java.awt.Window.Type;
import java.util.Calendar;
import java.util.Date;

import javax.swing.SwingConstants;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import java.awt.Component;
import javax.swing.JTable;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class ProjectRegisterFrm extends JFrame {

 private JPanel contentPane;
 private JTextField txtProjectName;
 private JTextField txtPrice;
 private JTable table;
 private JTextField txtSearch;
 private JTextField txtCompanyName;
 private JTextField txtCompanyID;

 /**
  * Create the frame.
  */
 public ProjectRegisterFrm() {

         DBMS dbms = new DBMS("jdbc:mysql://localhost:3306/jungdy", "root", "apmsetup");
         DML dml = new DML(dbms);
         setResizable(false);
  
  setType(Type.UTILITY);
  setIconImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\jungdy\\Desktop\\JavaSwing\\logo-icons.png"));
  setTitle("\uD504\uB85C\uC81D\uD2B8 \uB4F1\uB85D");
  setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  setBounds(100, 100, 635, 460);
  
  contentPane = new JPanel();
  contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  setContentPane(contentPane);
  contentPane.setLayout(null);
  
  JPanel panel = new JPanel();
  panel.setBorder(new LineBorder(Color.GRAY));
  panel.setBounds(12, 57, 592, 138);
  contentPane.add(panel);
  panel.setLayout(null);
  
  JLabel lblNewLabel = new JLabel("\uD504\uB85C\uC81D\uD2B8\uBA85");
  lblNewLabel.setFont(new Font("돋움", Font.PLAIN, 12));
  lblNewLabel.setHorizontalAlignment(SwingConstants.LEFT);
  lblNewLabel.setBounds(12, 13, 75, 15);
  panel.add(lblNewLabel);
  
  txtProjectName = new JTextField();
  txtProjectName.setFont(new Font("돋움", Font.PLAIN, 12));
  txtProjectName.setBounds(99, 13, 481, 21);
  panel.add(txtProjectName);
  txtProjectName.setColumns(10);
  
  JLabel label_1 = new JLabel("\uAE08\uC561");
  label_1.setFont(new Font("돋움", Font.PLAIN, 12));
  label_1.setBounds(12, 41, 57, 15);
  panel.add(label_1);
  
  txtPrice = new JTextField();
  txtPrice.addKeyListener(new KeyAdapter() {
   @Override
   
            public void keyTyped(KeyEvent e) {
                  // 숫자만 입력
                  char c = e.getKeyChar();
     
                  if (!Character.isDigit(c)) {
                      e.consume();
                  return;
                 }
          }
  });
  
  txtPrice.setFont(new Font("돋움", Font.PLAIN, 12));
  txtPrice.setColumns(10);
  txtPrice.setBounds(99, 41, 481, 21);
  panel.add(txtPrice);
  
  JPanel panel_2 = new JPanel();
  panel_2.setBorder(new LineBorder(Color.GRAY));
  panel_2.setBounds(0, 68, 592, 70);
  panel.add(panel_2);
  panel_2.setLayout(null);
  
  JComboBox cmb_startDay = new JComboBox();
  cmb_startDay.setFont(new Font("돋움", Font.PLAIN, 12));
  cmb_startDay.setBounds(218, 10, 57, 21);
  panel_2.add(cmb_startDay);
  
  JComboBox cmb_endDay = new JComboBox();
  cmb_endDay.setFont(new Font("돋움", Font.PLAIN, 12));
  cmb_endDay.setBounds(218, 41, 57, 21);
  panel_2.add(cmb_endDay);
  
  JComboBox cmb_endMonth = new JComboBox();
  cmb_endMonth.setFont(new Font("돋움", Font.PLAIN, 12));
  cmb_endMonth.setBounds(159, 41, 57, 21);
  panel_2.add(cmb_endMonth);
  
  JComboBox cmb_startMonth = new JComboBox();
  cmb_startMonth.setFont(new Font("돋움", Font.PLAIN, 12));
  cmb_startMonth.setBounds(159, 10, 57, 21);
  panel_2.add(cmb_startMonth);
  
  JComboBox cmb_startYear = new JComboBox();
  cmb_startYear.setFont(new Font("돋움", Font.PLAIN, 12));
  cmb_startYear.setBounds(100, 10, 57, 21);
  panel_2.add(cmb_startYear);
  
  JComboBox cmb_endYear = new JComboBox();
  cmb_endYear.setFont(new Font("돋움", Font.PLAIN, 12));
  cmb_endYear.setBounds(100, 41, 57, 21);
  panel_2.add(cmb_endYear);
  
  JLabel label_5 = new JLabel("\uC885\uB8CC\uC77C\uC790");
  label_5.setFont(new Font("돋움", Font.PLAIN, 12));
  label_5.setBounds(12, 41, 101, 15);
  panel_2.add(label_5);
  
  JLabel label_7 = new JLabel("\uC2DC\uC791\uC77C\uC790");
  label_7.setFont(new Font("돋움", Font.PLAIN, 12));
  label_7.setBounds(12, 10, 57, 15);
  panel_2.add(label_7);
  
  txtCompanyName = new JTextField();
  txtCompanyName.setEditable(false);
  txtCompanyName.setFont(new Font("돋움", Font.PLAIN, 12));
  txtCompanyName.setColumns(10);
  txtCompanyName.setBounds(434, 10, 146, 21);
  panel_2.add(txtCompanyName);
  
  JLabel label_3 = new JLabel("\uD68C\uC0AC\uBA85");
  label_3.setFont(new Font("돋움", Font.PLAIN, 12));
  label_3.setBounds(335, 13, 57, 15);
  panel_2.add(label_3);
  
  JLabel txtCompany = new JLabel("\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638");
  txtCompany.setFont(new Font("돋움", Font.PLAIN, 12));
  txtCompany.setBounds(335, 43, 104, 15);
  panel_2.add(txtCompany);
  
  txtCompanyID = new JTextField();
  txtCompanyID.setEditable(false);
  txtCompanyID.setFont(new Font("돋움", Font.PLAIN, 12));
  txtCompanyID.setColumns(10);
  txtCompanyID.setBounds(434, 40, 146, 21);
  panel_2.add(txtCompanyID);
  
  JLabel label = new JLabel("\uD504\uB85C\uC81D\uD2B8 \uB4F1\uB85D");
  label.setFont(new Font("돋움", Font.BOLD, 15));
  label.setBounds(12, 26, 109, 21);
  contentPane.add(label);
  
  JPanel panel_1 = new JPanel();
  panel_1.setBorder(new LineBorder(Color.GRAY));
  panel_1.setBounds(12, 237, 592, 131);
  contentPane.add(panel_1);
  panel_1.setLayout(null);
  
  String header[] = {"안녕", "하세", "요"};

  String cells[][] = {
    {"111", "222", "333"},
    {"444", "555", "666"},
    {"777", "888", "999"}};


  table = new JTable(cells, header);


  table.addMouseListener(new MouseAdapter() {
               @Override
               public void mouseClicked(MouseEvent arg0) {
    
                      // 테이블 선택 값 가져오기
    
                      int row = table.getSelectedRow();
                      int col = table.getSelectedColumn();
    
                      Object value = table.getValueAt(row, col);
    
                      txtCompanyID.setText( value.toString() );
    
             }
  });


  table.setFont(new Font("돋움", Font.PLAIN, 12));
  JScrollPane scrollPane = new JScrollPane(table);
  scrollPane.setBounds(12, 40, 568, 85);
  
  panel_1.add(scrollPane);
  
  txtSearch = new JTextField();
  txtSearch.setFont(new Font("돋움", Font.PLAIN, 12));
  txtSearch.setColumns(10);
  txtSearch.setBounds(101, 9, 402, 21);
  panel_1.add(txtSearch);
  
  JLabel label_2 = new JLabel("\uD68C\uC0AC\uC870\uD68C");
  label_2.setFont(new Font("돋움", Font.PLAIN, 12));
  label_2.setBounds(12, 12, 57, 15);
  panel_1.add(label_2);
  
  JButton btnQuery = new JButton("\uC870\uD68C");
  
  btnQuery.addActionListener(new ActionListener() {
   
   public void actionPerformed(ActionEvent arg0) {
            String sql = "select * from project where name like '%" + txtSearch.getText() + "%'"; 
            dml.select(sql);
    
            System.out.print(sql);
    
            String[][] cells = dml.getCells();
            String[] header = dml.getHeader();
    
            DefaultTableModel defTableModel = new DefaultTableModel(cells, header);
            table.setModel(defTableModel);
        }
  });


  btnQuery.setFont(new Font("돋움", Font.PLAIN, 12));
  btnQuery.setBounds(515, 7, 65, 24);
  panel_1.add(btnQuery);
  
  JButton btnOK = new JButton("\uB4F1\uB85D");
  
  btnOK.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    
              String startDate = cmb_startYear.getSelectedItem().toString() + "-" +
                                       cmb_startMonth.getSelectedItem().toString() + "-" +
                                       cmb_startDay.getSelectedItem().toString();
     
              String endDate = cmb_endYear.getSelectedItem().toString() + "-" +
                                      cmb_endMonth.getSelectedItem().toString() + "-" +
                                      cmb_endDay.getSelectedItem();
    
              if ( txtProjectName.getText().isEmpty() )
             {
                       JOptionPane.showMessageDialog(null, "프로젝트명을 입력하세요.");
                       return;
             }
    
             if ( txtPrice.getText().isEmpty() )
             {
                      JOptionPane.showMessageDialog(null, "금액을 입력하세요.");
                      return;
             }
    
            if ( txtCompanyID.getText().isEmpty() )
            {
                     JOptionPane.showMessageDialog(null, "회사코드를 입력하세요.");
                     return;
            }
    
            String sql = "insert into project (name, price, startdate, enddate, company_id) values " +
                             "('" + txtProjectName.getText() + "' , " +
                             txtPrice.getText() + ", '" +
                             startDate + "' , '" +
                             endDate +  "' , '" +
                             txtCompanyID.getText() + "')";
    
            System.out.println(sql);
    
            try {
                    dml.update(sql);
           } catch (ClassNotFoundException | SQLException e1) {
                     e1.printStackTrace();
           }
    
           contentPane.setLayout(null);
           JOptionPane.showMessageDialog(null, "등록이 완료되었습니다.");
    
        }
  });
  
  btnOK.setFont(new Font("돋움", Font.PLAIN, 12));
  btnOK.setBounds(468, 378, 136, 24);
  contentPane.add(btnOK);


      Calendar cal = java.util.Calendar.getInstance();


      cmb_startYear.addItem( cal.get( cal.YEAR ) );
      cmb_endYear.addItem( cal.get( cal.YEAR ) );
      cmb_startMonth.addItem( cal.get( cal.MONTH ) + 1 );
      cmb_endMonth.addItem( cal.get( cal.MONTH ) + 1 );
      cmb_startDay.addItem( cal.get( cal.DATE ) );
      cmb_endDay.addItem( cal.get( cal.DATE ) );
  
      int i = 1900;
      int j = 2099;
  
      while ( i <= j )
      {
             cmb_startYear.addItem(i);
             cmb_endYear.addItem(i);
             i++;
       }
  
        i = 1;
        j = 12;
  
      while ( i <= j )
      {
           cmb_startMonth.addItem(i);
           cmb_endMonth.addItem(i);
           i++;
      }
  
      i = 1;
      j = 31;
  
      while ( i <= j )
     {
         cmb_startDay.addItem(i);
         cmb_endDay.addItem(i);
   
         i++;
     }
  }

}

 ProjectRegisterFrm.java




/*
 * Created Date: 2017-10-15
 * ProjectManageFrm.java
 * 작성자: 도도(dodo) - rabbit.white@daum.net
 */

package JWindow;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.border.LineBorder;
import java.awt.Color;
import java.awt.Toolkit;
import java.util.Calendar;

import javax.swing.JScrollPane;
import javax.swing.JTable;

import java.awt.Component;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JTextField;

public class ProjectManageFrm extends JFrame {

 private JPanel contentPane;
 private JTextField txtQuery;

 /**
  * Create the frame.
  */
 public ProjectManageFrm() {
  setIconImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\jungdy\\Desktop\\JavaSwing\\logo-icons.png"));
  setTitle("프로젝트 관리");
  setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  setBounds(100, 100, 1000, 602);
  contentPane = new JPanel();
  contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  setContentPane(contentPane);
  contentPane.setLayout(null);
  
  JLabel lblNewLabel = new JLabel("\uD504\uB85C\uC81D\uD2B8 \uAD00\uB9AC");
  lblNewLabel.setFont(new Font("돋움", Font.BOLD, 15));
  lblNewLabel.setBounds(12, 20, 116, 15);
  contentPane.add(lblNewLabel);
  
  JPanel jTablePanel = new JPanel();
  jTablePanel.setBorder(new LineBorder(Color.GRAY));
  jTablePanel.setBounds(12, 45, 960, 506);
  contentPane.add(jTablePanel);
  jTablePanel.setLayout(null);
  
  String header[] = {"안녕", "하세", "요"};

  String cells[][] = {
    {"111", "222", "333"},
    {"444", "555", "666"},
    {"777", "888", "999"}};
  
  JTable table = new JTable(cells, header);
  JScrollPane scrollPane = new JScrollPane(table);

  scrollPane.setBounds(12, 130, 936, 333);
  jTablePanel.add(scrollPane);
  
  JButton btnDelete = new JButton("\uC0AD\uC81C");
  btnDelete.setFont(new Font("돋움", Font.PLAIN, 12));
  btnDelete.setBounds(851, 473, 97, 23);
  jTablePanel.add(btnDelete);
  
  JButton btnModify = new JButton("\uC218\uC815");
  btnModify.setFont(new Font("돋움", Font.PLAIN, 12));
  btnModify.setBounds(742, 473, 97, 23);
  jTablePanel.add(btnModify);
  
  JPanel panel_1 = new JPanel();
  panel_1.setBorder(new LineBorder(Color.GRAY));
  panel_1.setBounds(12, 44, 936, 68);
  jTablePanel.add(panel_1);
  panel_1.setLayout(null);
  
  JLabel label = new JLabel("\uC2DC\uC791\uC77C\uC790");
  label.setFont(new Font("돋움", Font.PLAIN, 12));
  label.setBounds(12, 14, 76, 15);
  panel_1.add(label);
  
  JLabel label_1 = new JLabel("\uD504\uB85C\uC81D\uD2B8\uBA85");
  label_1.setFont(new Font("돋움", Font.PLAIN, 12));
  label_1.setBounds(12, 43, 76, 15);
  panel_1.add(label_1);
  
  txtQuery = new JTextField();
  txtQuery.setColumns(10);
  txtQuery.setBounds(100, 40, 462, 21);
  panel_1.add(txtQuery);
  
  JComboBox cmb_startYear = new JComboBox();
  cmb_startYear.setFont(new Font("돋움", Font.PLAIN, 12));
  cmb_startYear.setBounds(100, 14, 57, 21);
  panel_1.add(cmb_startYear);
  
  JComboBox cmb_startMonth = new JComboBox();
  cmb_startMonth.setFont(new Font("돋움", Font.PLAIN, 12));
  cmb_startMonth.setBounds(159, 14, 57, 21);
  panel_1.add(cmb_startMonth);
  
  JComboBox cmb_startDay = new JComboBox();
  cmb_startDay.setFont(new Font("돋움", Font.PLAIN, 12));
  cmb_startDay.setBounds(218, 14, 57, 21);
  panel_1.add(cmb_startDay);
  
  JLabel label_2 = new JLabel("\uC885\uB8CC\uC77C\uC790");
  label_2.setFont(new Font("돋움", Font.PLAIN, 12));
  label_2.setBounds(299, 14, 76, 15);
  panel_1.add(label_2);
  
  JComboBox cmb_endYear = new JComboBox();
  cmb_endYear.setFont(new Font("돋움", Font.PLAIN, 12));
  cmb_endYear.setBounds(387, 14, 57, 21);
  panel_1.add(cmb_endYear);
  
  JComboBox cmb_endMonth = new JComboBox();
  cmb_endMonth.setFont(new Font("돋움", Font.PLAIN, 12));
  cmb_endMonth.setBounds(446, 14, 57, 21);
  panel_1.add(cmb_endMonth);
  
  JComboBox cmb_endDay = new JComboBox();
  cmb_endDay.setFont(new Font("돋움", Font.PLAIN, 12));
  cmb_endDay.setBounds(505, 14, 57, 21);
  panel_1.add(cmb_endDay);
  
  JButton btnDateQry = new JButton("\uC870\uD68C");
  btnDateQry.setFont(new Font("돋움", Font.PLAIN, 12));
  btnDateQry.setBounds(574, 10, 139, 23);
  panel_1.add(btnDateQry);
  
  JButton btnTxtQry = new JButton("\uC870\uD68C");
  btnTxtQry.setFont(new Font("돋움", Font.PLAIN, 12));
  btnTxtQry.setBounds(574, 39, 139, 23);
  panel_1.add(btnTxtQry);
  
  JLabel label_3 = new JLabel("\uC870\uD68C\uC870\uAC74");
  label_3.setFont(new Font("돋움", Font.PLAIN, 12));
  label_3.setBounds(12, 20, 57, 15);
  jTablePanel.add(label_3);
  
  JButton btnDetail = new JButton("\uC0C1\uC138\uC870\uD68C");
  btnDetail.setFont(new Font("돋움", Font.PLAIN, 12));
  btnDetail.setBounds(633, 473, 97, 23);
  jTablePanel.add(btnDetail);
  
  
  
  Calendar cal = java.util.Calendar.getInstance();
  cmb_startYear.addItem( cal.get( cal.YEAR ) );
  cmb_endYear.addItem( cal.get( cal.YEAR ) );
  cmb_startMonth.addItem( cal.get( cal.MONTH ) + 1 );
  cmb_endMonth.addItem( cal.get( cal.MONTH ) + 1 );
  cmb_startDay.addItem( cal.get( cal.DATE ) );
  cmb_endDay.addItem( cal.get( cal.DATE ) );
  
  int i = 1900;
  int j = 2099;
  
  while ( i <= j )
  {
   cmb_startYear.addItem(i);
   cmb_endYear.addItem(i);
   i++;
  }
  
  i = 1;
  j = 12;
  
  while ( i <= j )
  {
   cmb_startMonth.addItem(i);
   cmb_endMonth.addItem(i);
   i++;
  }
  
  i = 1;
  j = 31;
  
  while ( i <= j )
  {
   cmb_startDay.addItem(i);
   cmb_endDay.addItem(i);
   
   i++;
  }
  
 }
}

 ProjectManageFrm.java



/*
 * Created Date: 2017-10-15
 * UserRegisterFrm.java
 * 작성자: 도도(dodo) - rabbit.white@daum.net
 */

package JWindow;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Toolkit;

public class UserRegisterFrm extends JFrame {

 private JPanel contentPane;

 /**
  * Create the frame.
  */
 public UserRegisterFrm() {
  
  setIconImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\jungdy\\Desktop\\JavaSwing\\logo-icons.png"));
  
  setTitle("\uC0AC\uC6A9\uC790 \uB4F1\uB85D");
  setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  setBounds(100, 100, 450, 300);
  contentPane = new JPanel();
  contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  contentPane.setLayout(new BorderLayout(0, 0));
  setContentPane(contentPane);
  
 }

}

 UserRegisterFrm.java



/*
 * Created Date: 2017-10-15
 * UserManageFrm.java
 * 작성자: 도도(dodo) - rabbit.white@daum.net
 */

package JWindow;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Toolkit;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

import java.awt.Component;
import javax.swing.border.LineBorder;
import java.awt.Color;
import java.awt.Font;

public class UserManageFrm extends JFrame {

 private JPanel contentPane;

 /**
  * Create the frame.
  */
 public UserManageFrm() {
  
  setResizable(false);
  
  setTitle("\uC0AC\uC6A9\uC790 \uAD00\uB9AC");
  setIconImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\jungdy\\Desktop\\JavaSwing\\logo-icons.png"));
  setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  setBounds(100, 100, 900, 700);
  
  contentPane = new JPanel();
  contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  setContentPane(contentPane);
  contentPane.setLayout(null);
  
  JLabel lblNewLabel = new JLabel("\uC0AC\uC6A9\uC790 \uAD00\uB9AC");
  lblNewLabel.setFont(new Font("돋움", Font.BOLD, 14));
  lblNewLabel.setBounds(12, 22, 92, 15);
  contentPane.add(lblNewLabel);
  
  JPanel panel = new JPanel();
  panel.setBounds(12, 47, 860, 604);
  contentPane.add(panel);
  panel.setLayout(null);
  
  String header[] = {"안녕", "하세", "요"};

  String cells[][] = {
    {"111", "222", "333"},
    {"444", "555", "666"},
    {"777", "888", "999"}};
  
  JTable table = new JTable(cells, header);
  JScrollPane scrollPane = new JScrollPane(table);
  scrollPane.setBounds(12, 105, 836, 322);
  panel.add(scrollPane);
  
  JPanel panel_1 = new JPanel();
  panel_1.setBorder(new LineBorder(Color.GRAY));
  panel_1.setBounds(12, 45, 836, 50);
  panel.add(panel_1);
  panel_1.setLayout(null);
  
  JLabel lblNewLabel_2 = new JLabel("New label");
  lblNewLabel_2.setBounds(12, 10, 57, 15);
  panel_1.add(lblNewLabel_2);
  
  JLabel lblNewLabel_1 = new JLabel("\uC870\uD68C \uC870\uAC74");
  lblNewLabel_1.setBounds(12, 20, 57, 15);
  panel.add(lblNewLabel_1);
  
 }
}

 UserManageFrm.java




5. SQL Code



 CREATE TABLE `project` (
         `id` int(11) NOT NULL AUTO_INCREMENT,
        `name` varchar(45) DEFAULT NULL,
        `price` int(11) NOT NULL,
        `startdate` date DEFAULT NULL,
        `enddate` date DEFAULT NULL,
        `company_id` varchar(45) DEFAULT NULL,
         PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='예제';

 project.sql




6. Source


JavaSwing.zip


JavaSwing.zip
1.97MB