본문 바로가기
자바 스윙 (Java Swing)

Java Swing (5) 한국 축구 구단 관리 프로그램 (자바 스윙 프로젝트)

by s_hoonee 2023. 1. 2.
반응형

(5) 선수 사진 및 정보 세부 확인

초기 화면
손흥민 선수 검색
수비수로 필터링 이후 김민재 선수 클릭

기능

1. 우측 리스트에서 이름을 클릭하거나 검색하여 선수의 사진 및 정보를 확인 할 수 있습니다.

2. 우측 최단 버튼들을 이용해 리스트에 표시될 선수들을 포지션별로 필터링하여 정리할 수 있습니다.

3. 검색기록을 확인 할 수 있습니다.

// 이미지 크기 조정 -----------------------------------------------
ImageIcon imageSetSize(ImageIcon icon, int i, int j) { // 이미지 메소드 건들
		Image ximg = icon.getImage(); // ImageIcon을 Image로 변환.
		Image yimg = ximg.getScaledInstance(i, j, java.awt.Image.SCALE_SMOOTH);
		ImageIcon xyimg = new ImageIcon(yimg);
		return xyimg;
        
  // -----------------------선수 리스트 추가 메소드 ----------------------------------//
	private void panel_1_mainmethod() {
		panel_1.setLayout(new GridLayout(0, 1));
		model_names = new DefaultListModel<>();
		DB.init();
		
		sql_1 = "select * from MAINPLAYER";
		sql_2 = "select * from SUBPLAYER";

		rs = DB.getResult(sql_1); // 선발 선수
		rs1 = DB.getResult(sql_2); // 후보 선수

		int i = 0;
		
		try {
			model_names.addElement(" [  선발 선수  ] ");
			model_names.addElement("----------------------");
			

			while (rs.next()) // DB 값 뽑기
			{
				playerNumber[i] = rs.getInt("PN");
				player_name[i] = rs.getString("NAME");
				player_age[i] = rs.getInt("AGE");
				player_height[i] = rs.getInt("HEIGHT");
				player_weight[i] = rs.getInt("WEIGHT");
				player_position[i] = rs.getString("POSITION");

				model_names.addElement("No." + Integer.toString(rs.getInt("PN")) + " " + rs.getString("NAME"));
				model_names.addElement("----------------------");

				i++;
			}
			
		

			model_names.addElement(" [  후보 선수  ] ");
			model_names.addElement("----------------------");
			while (rs1.next()) {

				playerNumber[i] = rs1.getInt("PN");
				player_name[i] = rs1.getString("NAME");
				player_age[i] = rs1.getInt("AGE");
				player_height[i] = rs1.getInt("HEIGHT");
				player_weight[i] = rs1.getInt("WEIGHT");
				player_position[i] = rs1.getString("POSITION");

				model_names.addElement("No." + Integer.toString(rs1.getInt("PN")) + " " + rs1.getString("NAME"));
				model_names.addElement("----------------------");
				i++;
			}

		} catch (SQLException e) {
			e.printStackTrace();
		}
		try {
			rs.close();
			rs1.close();
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

		list = new JList<>(model_names);
		list.addListSelectionListener(this);
		list.addMouseListener(this);
		sp = new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		sp.getViewport().setBackground(Color.BLACK);
		panel_1.add(sp);
	}

//우측 필터링 버튼 ----------------------------------------------
if (obj == change_gk_btn) { // GK 필터링
			Change_Btn_filtering("GK");
		} else if (obj == change_df_btn) { // DF 필터링
			Change_Btn_filtering("DF");
		} else if (obj == change_mf_btn) { // MF 필터링
			Change_Btn_filtering("MF");
		} else if (obj == change_pw_btn) { // FW 필터링
			Change_Btn_filtering("FW");
            
// 툴바 검색 기능 -------------------------------
		if (obj == tf_toobar) {
			vecCombo.add(tf_toobar.getText());
			String get_toolbar_text = tf_toobar.getText();
			ResultSet rs = DB.getResult(sql_1);
			ResultSet rs1 = DB.getResult(sql_2);

			try {
				while (rs.next()) {
					temp = rs.getString("NAME");
					ResultSet rs_name = DB.getResult("select * from MAINPLAYER where name = '" + temp + "' ");
					if (temp.equals(get_toolbar_text)) {
						while (rs_name.next()) {
							rs_next(rs_name); // DB값 저장
						}
						SetText_info();// DB에서 불러온 값 출력
						rs_name.close();
					}
				}
				while (rs1.next()) {
					temp = rs1.getString("NAME");
					ResultSet rs_namesub = DB.getResult("select * from SUBPLAYER where name = '" + temp + "' ");
					if (temp.equals(get_toolbar_text)) {
						while (rs_namesub.next()) {
							rs_next(rs_namesub);
						}
						SetText_info();
					}
					rs_namesub.close();
				}
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			try {
				rs.close();
				rs1.close();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
            
//필터링 버튼 기능---------------------------------
private void Change_Btn_filtering(String Change_POSTION) { // 필터링 버튼 메서드
		ta_p2.setText("선수 검색 or 리스트를 클릭 하십시오");
		ResultSet rs = DB.getResult(sql_1);
		ResultSet rs1 = DB.getResult(sql_2);
		model_names.removeAllElements();

		try {
			model_names.addElement("== " + Change_POSTION + " 선발 ==");
			model_names.addElement("----------------------");
			while (rs.next()) {
				temp = rs.getString("POSITION");
				if (temp.equals(Change_POSTION)) {
					model_names.addElement("No." + Integer.toString(rs.getInt("PN")) + " " + rs.getString("NAME"));
					model_names.addElement("----------------------");
				}
			}
			model_names.addElement("== " + Change_POSTION + " 후보 ==");
			model_names.addElement("----------------------");
			while (rs1.next()) {
				temp = rs1.getString("POSITION");
				if (temp.equals(Change_POSTION)) {
					model_names.addElement("No." + Integer.toString(rs1.getInt("PN")) + " " + rs1.getString("NAME"));
					model_names.addElement("----------------------");
				}
			}

		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
			rs.close();
			rs1.close();

 

 

모든 기능을 포함하진 않고 몇개만 간략하게 뽑았습니다. 자세한 코드가 궁금하신 분은 댓글에 알려주세요!