반응형
2022 한국 축구 구단 관리 프로그램
(1) 후보 선수 관리 프레임
1. 좌측 '선수 정보입력'에서 데이터베이스에 선수를 추가할 수 있습니다.
2. 우측 '선수 리스트'에서 Jtable을 이용하여 현재 DB에 있는 선수 select, delete 할 수 있습니다.
3. 검색을 통해 DB에 있는 선수를 검색할 수 있습니다.
//JTable ---------------------------------------------------------
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
private JTable table;
model = new SubPlayerList();
model.setData();
table = new JTable(model);
table.addMouseListener(this);
table.setRowHeight(30);
table.setFont(new Font("고딕",Font.BOLD,15));
table.setAlignmentX(0);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
scrollPane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS
, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scrollPane.setBounds(360, 150, 600, 320);
add(scrollPane);
@Override
public void keyReleased(KeyEvent e) {
String val=searchnametf.getText();
//현재 행이 데이터를 갖고 있지 않으면 정리가 되도록함
TableRowSorter<TableModel> trs= new TableRowSorter<>(table.getModel());
table.setRowSorter(trs);
trs.setRowFilter(RowFilter.regexFilter(val));
}
// 선수 리스트 검색--------------------------------------------------------
JLabel searchname = new JLabel("이름 검색");
searchname.setBounds(400, 100, 120, 20);
searchnametf = new JTextField();
searchnametf.setBounds(480, 100, 190, 20);
searchnametf.addKeyListener(this);
add(searchnametf);
add(searchname);
@Override
public void keyReleased(KeyEvent e) {
String val=searchnametf.getText();
//현재 행이 데이터를 갖고 있지 않으면 정리가 되도록함
TableRowSorter<TableModel> trs= new TableRowSorter<>(table.getModel());
table.setRowSorter(trs);
trs.setRowFilter(RowFilter.regexFilter(val));
}
// 선수 삭제 --------------------------------------------------------
int select = table.getSelectedRow();
String delnum = null;
for (int i = 0; i < select + 1; i++) {
try {
rs.next();
delnum = rs.getString("PN");
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
if ( select < 0) {
JOptionPane.showMessageDialog(this, "선수를 선택해주세요.");
return;
}
if(JOptionPane.showConfirmDialog(this, "선수를 삭제하시겠습니까?", "삭제",
JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE)== JOptionPane.YES_OPTION ) {
sql = "DELETE FROM CBAN.SUBPLAYER WHERE PN="+delnum;
DB.executeSQL(sql);
JOptionPane.showMessageDialog(this, "선수가 삭제되었습니다.");
}
(2) 선발 선수 관리 프레임
1. 좌측 '선발 선수 리스트', 우측 '후보 선수 리스트'에서 MouseEvent를 이용해 후보 선수와 선발 선수를 교체하여 선발 선수 지정 가능
2. '후보 선수 리스트'에서 후보선수가 많을 경우 검색 기능 사용 가능
// 선수를 선택을 안했을 경우 -------------------------------------------------
if ( Mainselect < 0) {
JOptionPane.showMessageDialog(this, "선발 선수를 선택해주세요.");
return;
}
if ( Subselect < 0) {
JOptionPane.showMessageDialog(this, "후보 선수를 선택해주세요.");
return;
}
// 선발 선수 데이터 뽑기-----------------------------------------------
sql = "select * from MAINPLAYER";
ResultSet rs = DB.getResult(sql);
for (int i = 0; i < Mainselect + 1; i++) {
try {
rs.next();
Mainpn = rs.getString("PN");
Mainname = rs.getString("NAME");
Mainage = rs.getString("AGE");
Mainheight = rs.getString("HEIGHT");
Mainweight = rs.getString("WEIGHT");
Mainposition = rs.getString("POSITION");
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
// 후보 선수 데이터 뽑기-----------------------------------------
sql = "select * from SUBPLAYER";
rs = DB.getResult(sql);
for (int i = 0; i < Subselect + 1; i++) {
try {
rs.next();
Subpn = rs.getString("PN");
Subname = rs.getString("NAME");
Subage = rs.getString("AGE");
Subheight = rs.getString("HEIGHT");
Subweight = rs.getString("WEIGHT");
Subposition = rs.getString("POSITION");
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
if(JOptionPane.showConfirmDialog(this, "선수를 교체하시겠습니까?", "교체",
JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE)== JOptionPane.YES_OPTION ) {
// 선발,후보 삭제--------------------------------------------
sql = "INSERT INTO CBAN.MAINPLAYER\r\n"
+ "(PN, NAME, AGE, HEIGHT, WEIGHT, \"POSITION\")\r\n"
+ "VALUES("+Subpn+", '"+Subname+"', "+Subage+", "+Subheight+", "+Subweight+", '"+Subposition+"')";
DB.executeSQL(sql);
sql = "INSERT INTO CBAN.SUBPLAYER\r\n"
+ "(PN, NAME, AGE, HEIGHT, WEIGHT, \"POSITION\")\r\n"
+ "VALUES("+Mainpn+", '"+Mainname+"', "+Mainage+", "+Mainheight+", "+Mainweight+", '"+Mainposition+"')";
DB.executeSQL(sql);
// 선발,후보 삽입--------------------------------------------
sql = "DELETE FROM CBAN.SUBPLAYER\r\n"
+ "WHERE PN="+Subpn+"";
DB.executeSQL(sql);
sql = "DELETE FROM CBAN.MAINPLAYER\r\n"
+ "WHERE PN="+Mainpn+"";
DB.executeSQL(sql);
JOptionPane.showMessageDialog(this, "선수가 교체되었습니다.");
new MainPlayerFrame("구단 관리 프로그램");
dispose();
}
}
}
@Override
public void keyReleased(KeyEvent e) {
String val=searchnametf.getText();
//현재 행이 데이터를 갖고 있지 않으면 정리가 되도록함
TableRowSorter<TableModel> trs= new TableRowSorter<>(Subtable.getModel());
Subtable.setRowSorter(trs);
trs.setRowFilter(RowFilter.regexFilter(val));
}
}
모든 기능을 포함하진 않고 몇개만 간략하게 뽑았습니다. 자세한 코드가 궁금하신 분은 댓글에 알려주세요!
'자바 스윙 (Java Swing)' 카테고리의 다른 글
Java Swing (6) 한국 축구 구단 관리 프로그램 (자바 스윙 프로젝트) (0) | 2023.01.02 |
---|---|
Java Swing (5) 한국 축구 구단 관리 프로그램 (자바 스윙 프로젝트) (2) | 2023.01.02 |
Java Swing (4) 한국 축구 구단 관리 프로그램 (자바 스윙 프로젝트) (0) | 2023.01.01 |
Java Swing (2) 한국 축구 구단 관리 프로그램 (자바 스윙 프로젝트) (0) | 2023.01.01 |
Java Swing (1) 축구 구단 관리 프로그램 (자바 스윙 프로젝트) (0) | 2022.12.31 |