이번 시간에는 자바에서 JFrame과 Vector를 활용한 예제 소스코드를 올려봅니다.
위의 결과 화면과 같이, 이름과 나이를 입력하고 하단의 Save 버튼을 누르면
벡터에 이름과 나이가 저장이 됩니다.
그리고 Print 버튼을 누르면 저장된 벡터 값이 텍스트 영역에 출력이 되는 예제입니다
이것도 그렇게 어렵지 않으니 쉽게 이해하실수 있습니다
public class test extends JFrame{
JPanel p1,p2,p3;
JTextField tfName, tfAge;
JButton btSave, btPrint;
JTextArea ta;
Vector<day12.Person> v = new Vector<Person>();
public test(){
super("::MySwingGui::");
Container cp = this.getContentPane();
p1=new JPanel();
p2=new JPanel(){
@Override
public Insets getInsets(){
return new Insets(10,10,10,10);
}
}; // 이름없는 클래스(Anonymous class)
p3=new JPanel();
cp.add(p1, "North"); cp.add(p2, "Center"); cp.add(p3, "South");
tfName = new JTextField(15); tfAge = new JTextField(15);
p1.add(tfName); p1.add(tfAge);
tfName.setBorder(new TitledBorder("이름"));
tfAge.setBorder(new TitledBorder("나이"));
p1.setBorder(new LineBorder(Color.cyan, 3)); // 3은 두께를 의미
p1.setBackground(Color.yellow);
//Swing컴포넌트들은 스크롤바가 없다.
//만약 스크롤바가 필요하다면 JScrollPane에 얹어서 사용해야 한다
p2.setLayout(new BorderLayout());
ta = new JTextArea(7,30);
p2.add(new JScrollPane(ta), "Center");
p3.add(btSave = new JButton("Save"));
p3.add(btPrint = new JButton("Print"));
btSave.setMnemonic('S'); // ALT+S
btPrint.setMnemonic('P'); // ALT+P 단축키 적용
MyHandler l = new MyHandler();
btSave.addActionListener(l);
btPrint.addActionListener(l);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
class MyHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
Object o=e.getSource();
if(o==btSave){
setTitle("Save");
//1. 이름, 나이 입력 값을 얻어오기
String name=tfName.getText();
String ageStr=tfAge.getText();
//1_2. 유효성 체크
int age=0;
try{
age=Integer.parseInt(ageStr.trim());
}catch(NumberFormatException ex){
JOptionPane.showMessageDialog(ta, "나이는 숫자여야 해요");
tfAge.setText("");
tfAge.requestFocus(); //입력 포커스 가기
return;
}
//2. Person객체를 생성해서 이름과 나이 설정
Person p = new Person(name,age);
//3. v에 Person을 저장하고 ta에 "정보를 저장하였습니다" 를 출력하자
v.add(p);
ta.setText("정보를 저장하였습니다\n");
tfName.setText(""); tfAge.setText("");
tfName.requestFocus();
}else if(o==btPrint){
setTitle("Print");
//반복문 돌면서 v에 저장된 Person의 정보를 ta에 출력한다.
//Iterator<E> iteratorI()메소드 활용해서
//Iterator<Person> it=v1.iterator();
Iterator<Person> it=v.iterator();
ta.setText("");
for(int i=1;it.hasNext();i++){
Person p=it.next();
String info=i+": "+p.getName()+"["+p.getAge()+"세]";
ta.append(info+"\n"); // 줄바꿈
}
}
}
} // inner class
public static void main(String[] args) {
test my = new test();
my.setSize(500, 500);
my.setVisible(true);
}
}
댓글 없음:
댓글 쓰기