-
이름과 잔액을 쓰고 예금, 출금, 파일 저장 버튼 만들기 (Bank)
-
계좌 잔액 부족시 경고 프레임 창 띄우기 (MessageBox)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
package swingTest;
import java.awt.GridLayout;
import java.awt.List;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.beans.PropertyChangeListener;
import java.util.HashMap;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Bank extends JFrame {
HashMap<String, Integer> hm=new HashMap<String, Integer>(); //이름과 잔액을 기억하기 위함
public Bank() {
setTitle("BANK");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(1,2));
JPanel left=new JPanel(); //왼쪽꺼
left.setLayout(new GridLayout(5,1));
JPanel p1=new JPanel(); //왼쪽 첫번째 줄
p1.add(new JLabel("이름"));
JTextField tfName=new JTextField(15);
p1.add(tfName);
JButton btn=new JButton("계좌생성"); //왼쪽 두번째 줄
JPanel p2=new JPanel(); //왼쪽 세번째 줄
p2.add(new JLabel("잔액"));
JTextField tfBalance=new JTextField(15);
tfBalance.setEditable(false); //수정 못하게끔
p2.add(tfBalance);
JPanel p3=new JPanel(); //왼쪽 네번째 줄
JTextField tfMoney=new JTextField(15);
p3.add(tfMoney); p3.add(new JLabel("원"));
JPanel p4=new JPanel(); //왼쪽 다섯번째 줄
JButton inputBtn=new JButton("예금");
JButton outputBtn=new JButton("출금");
JButton fileBtn=new JButton("파일로 저장");
p4.add(inputBtn); p4.add(outputBtn); p4.add(fileBtn);
left.add(p1); left.add(btn); left.add(p2); left.add(p3); left.add(p4);
//오른쪽 화면
List lst=new List();
//왼쪽 오른쪽 부착
add(left); add(lst);
//계좌생성버튼 클릭
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//tfName의 내용을 가져와서 lst에 추가한다. 단 공백은 저장 안함
if(tfName.getText().isEmpty()) return;
lst.add(tfName.getText().trim()); //trim은 공백제거
hm.put(tfName.getText(),0); //맵에 저장
tfName.setText("");
}
});
//리스트
lst.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
//리스트에서 선택한 이름을 tfName에 넣고 잔액은 tfBalance에 넣기
String str=lst.getSelectedItem();
tfName.setText(str);
tfBalance.setText(hm.get(str)+""); //키값인 str을 넣으면 밸류값(돈)이 반환. setText는 스트링.
}
});
//예금버튼 클릭
inputBtn.addActionListener(new ActionListener() {
/*
* 1. 리스트에서 선택한 계좌 잔액에
* 2. tfMoney 만큼 더해서
* 3. 잔액(tfBalance)을 고쳐주고 맵에 저장
*/
public void actionPerformed(ActionEvent e) {
String key=lst.getSelectedItem();
int balance=hm.get(key); //기존잔액
int value=balance+Integer.parseInt(tfMoney.getText()); //수정잔액
tfBalance.setText(value+""); //화면에서 잔액수정
hm.put(key, value); //맵 내용 수정
tfMoney.setText(""); //편의를 위해 예금액 지우기
}
});
//출금버튼 클릭
outputBtn.addActionListener(new ActionListener() {
/*
* 1. 리스트에서 선택한 계좌 잔액에
* 2. tfMoney 만큼 빼서
* 3. 잔액(tfBalance)을 고쳐주고 맵에 저장
*/
public void actionPerformed(ActionEvent e) {
String key=lst.getSelectedItem();
int balance=hm.get(key); //기존잔액
int value=balance-Integer.parseInt(tfMoney.getText()); //수정잔액
if(value<0) {
new MessageBox("잔액부족!!", key+"님 잔액이 부족합니다."); //타이틀, 메시지
return;
}
tfBalance.setText(value+""); //화면에서 잔액수정
hm.put(key, value); //맵 내용 수정
tfMoney.setText(""); //편의를 위해 예금액 지우기
}
});
setSize(500,300);
setVisible(true);
}
public static void main(String[] args) {
new Bank();
}
}
|
cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | package swingTest; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; public class MessageBox extends JFrame{ public MessageBox(String title, String msg) { setTitle(title); setLayout(new FlowLayout()); // setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Bank클래스의 프레임까지 같이 닫아버림 JButton closeBtn=new JButton("닫기"); JLabel lbl=new JLabel(msg); add(lbl); add(closeBtn); closeBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose(); //자신의 창만 닫도록 함 } }); setSize(300,100); setVisible(true); } } | cs |
'Learning > JAVA' 카테고리의 다른 글
메모장처럼 내용을 입력하고 열기, 저장하는 프레임 만들기 (Memo) (0) | 2020.06.29 |
---|---|
예금, 출금, 파일로 저장하는 프레임 만들기. 파일로 저장한 내용을 리스트에 불러오기 (Bank) (0) | 2020.06.29 |
CalTest 클래스를 복사하여 내부 클래스로 나타내기 (CalTest2) (0) | 2020.06.26 |
addActionListener 메소드의 매개변수에 액션 리스너 생성, addItemLister 메소드의 매개변수에 ItemStateChanged 생성 (ListTest3) (0) | 2020.06.26 |
내부 클래스 이용해서 리스트 출력(ListTest2) (0) | 2020.06.26 |