자바 스윙 (Java Swing)
Java Swing (7) 리뷰 포함 한국 축구 구단 관리 프로그램 (자바 스윙 프로젝트)
s_hoonee
2023. 1. 2. 12:16
반응형
2022 한국 축구 구단 관리 프로그램
(7) 일정
기능
1. 날짜마다 메모를 저장할 수 있고 바탕화면에 .txt 파일로 메모가 저장됩니다.
for (int i = 0; i < buttons.length; i++) {
buttons[i] = new JButton();
buttons[i].setBackground(new Color(0xEDEDED));
panel2.add(buttons[i]);
buttons[i].addActionListener(this);
if (i < 7)
{
buttons[i].setText(dotw[i]);
buttons[i].setFont(new Font("monospaced", Font.BOLD, 16));
panel2.add(buttons[i]);
if (buttons[i] == buttons[0]) {
buttons[i].setForeground(Color.RED); // '일요일'의 색을 빨간색으로 지정
}
if (buttons[i] == buttons[6]) {
buttons[i].setForeground(Color.BLUE); // '토요일'의 색을 파란색으로 지정
}
}
else
{
buttons[i].setFont(new Font("monospaced", Font.PLAIN, 14));
if (i % 7 == 6) // 토요일
{
buttons[i].setForeground(Color.BLUE);
}
else if (i % 7 == 0) // 일요일
{
buttons[i].setForeground(Color.RED);
}
}
}
calSet();
for (int i = 0; i < buttons.length; i++) {
if ( buttons[i].getText().equals("")) {
buttons[i].setEnabled(false);
} else
buttons[i].setEnabled(true);
}
Edgepanel.add(panel2);
add(panCenter);
//메모장 버튼 및 레이블 ---------------------------------------------------
memoday = new JLabel();
memoday.setBounds(10, 10, 200, 30);
Edgepanel2.add(memoday);
tf = new JTextField();
tf.setBounds(10, 50, 415, 270);
Edgepanel2.add(tf);
memosave = new JButton("메모 저장");
memosave.setBounds(110, 360, 90, 30);
memosave.addActionListener(this);
memosave.setBackground(Color.LIGHT_GRAY);
Edgepanel2.add(memosave);
memodelete = new JButton("메모 삭제");
memodelete.setBounds(240, 360, 90, 30);
memodelete.addActionListener(this);
memodelete.setBackground(Color.LIGHT_GRAY);
Edgepanel2.add(memodelete);
setVisible(true);
}
// 달력 값을 관리하는 기본 메소드
private void calManage() {
calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH) + 1;
}
// 달력의 값을 변경하는 메소드
private void calUpdate() {
for (int i = 7; i < buttons.length; i++) // 요일의 값은 그대로 두고 일자의 값만 바꿔야 하기 때문에 초기값을 7로 설정
{
buttons[i].setText(""); // 달력의 값을 지움
}
calSet(); // 달력의 값을 다시 등록
day.setText(" " + year + "년 " + month + "월 구단 일정 ");
}
// 달력의 연도를 바꾸는 메소드
private void calChange() {
if (month <= 0)
{
month = 12;
year--;
}
else if (month >= 13)
{
month = 1;
year++;
}
}
// 달력에 날짜를 등록하는 메소드
private void calSet() {
calendar.set(year, month - 1, 1);
int firstDay = calendar.get(Calendar.DAY_OF_WEEK) - 1;
for (int i = 1; i <= calendar.getActualMaximum(Calendar.DATE); i++) { // getActualMaximum = 그 달의 값을 얻어옴
{
buttons[6 + firstDay + i].setText(Integer.toString(i));
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();
if (obj == beforeButton) {
month -= 1;
calChange();
calUpdate();
for (int i = 0; i < buttons.length; i++) {
if ( buttons[i].getText().equals("")) {
buttons[i].setEnabled(false);
} else
buttons[i].setEnabled(true);
}
}
if (obj == afterButton) {
month += 1;
calChange();
calUpdate();
for (int i = 0; i < buttons.length; i++) {
if ( buttons[i].getText().equals("")) {
buttons[i].setEnabled(false);
} else
buttons[i].setEnabled(true);
}
}
//메모 바탕화면에 저장 ------------------------------------------------
if ( obj == memosave) {
//날짜 선택 안할 경우
if( clickday == null) {
JOptionPane.showMessageDialog(this, "날짜를 선택해주세요.");
return;
//메모장이 빈 칸일 경우
} else if (tf.getText().equals("")) {
JOptionPane.showMessageDialog(this, "메모를 입력해주세요.");
return;
}
String text = ""+tf.getText()+"";
String fileNm = "C:\\Users\\mycom\\Desktop\\" + month +"월"+ clickday +"일 일정.txt";
FileWriter fileWrite;
try {
File file = new File(fileNm);
fileWrite = new FileWriter(file);
fileWrite.write(text);
fileWrite.flush();
fileWrite.close();
JOptionPane.showMessageDialog(this, "메모가 저장되었습니다.");
fileWrite.close();
} catch (IOException e1) {
System.out.println("오류");
e1.printStackTrace();
}
} else if ( obj == memodelete) {
//날짜 선택 안할 경우
if( clickday == null) {
JOptionPane.showMessageDialog(this, "날짜를 선택해주세요.");
return;
}
String fileNm = "C:\\Users\\mycom\\Desktop\\" + month +"월"+ clickday +"일 일정.txt";
File file = new File(fileNm);
if( file.exists() ){ //파일존재여부확인
if(file.delete()){
if(JOptionPane.showConfirmDialog(this, "메모를 삭제하시겠습니까?", "삭제",
JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE)== JOptionPane.YES_OPTION ) {
JOptionPane.showMessageDialog(this, "메모가 삭제되었습니다.");
}
tf.setText("");
}else{
System.out.println("파일삭제 실패");
}
} else{
JOptionPane.showMessageDialog(this, "저장된 메모가 없습니다.");
}
}
}
모든 기능을 포함하진 않고 몇개만 간략하게 뽑았습니다. 자세한 코드가 궁금하신 분은 댓글에 알려주세요!