Lab Exercise #7 Swing Component 프로그래밍 2007 봄학기 고급프로그래밍 김영국충남대전기정보통신공학부
실습내용 실습과제 7-1 : 정규표현식을이용한사용자정보의유효성검사 (ATM 에서사용자등록용도로사용가능 ) 실습과제 7-2 : 숫자맞추기게임 실습과제 7-3 : 은행관리프로그램 고급프로그래밍 Swing Component 프로그래밍 2
정규표현식에서의한정사사용 한정사설명 * 일치하는문자열이없거나하나이상있다. + 일치하는문자열이하나있다.? 일치하는문자열이없거나하나있다. {n} 일치하는문자열이정확히 n개있다. {n,} 일치하는문자열이적어도 n개있다. {n,m} 일치하는문자열이 n개이상 m개있다. [0-9a-zA-Z] 숫자와알파벳의조합문자열 고급프로그래밍 Swing Component 프로그래밍 3
실습과제 7-1(1) Jlabel : 읽기전용텍스트나이미지를보여주는데사용 JTextField : 사용자가키보드를통해서텍스트입력받거나프로그램이텍스트보여줄수있는단행영역 JPasswordField : 사용자가문자를입력할때실제문자를감춘다 JButton : 사용자가클릭할때특정행위가일어나도록함 command, check box, radio, toggle 등이있다. 고급프로그래밍 Swing Component 프로그래밍 4
실습과제 7-1(2) import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ValidateFrame extends JFrame { private JTextField phonetextfield, passwdfield,re_passwdfield, addresstextfield, firsttextfield, lasttextfield; public ValidateFrame() { super( "Validate" ); // create the GUI components JLabel phonelabel = new JLabel( "Phone" ); /* 다른컴포넌트추가한다. Jlabel*/ JButton okbutton = new JButton( "OK" ); okbutton.addactionlistener( new ActionListener() { // inner class public void actionperformed( ActionEvent event ) { validatedate(); } } ); 고급프로그래밍 Swing Component 프로그래밍 5
실습과제 7-1(3) /*JTextFiled components 생성한다.*/ Container container = getcontentpane(); /* GridLayout 사용 */ /* container 에 component 들을추가시킨다. */ setsize( 300, 225 ); setvisible( true ); } // end ValidateFrame constructor public static void main( String args[] ) { ValidateFrame application = new ValidateFrame(); application.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); } 고급프로그래밍 Swing Component 프로그래밍 6
실습과제 7-1(4) public static void main( String args[] ) { ValidateFrame application = new ValidateFrame(); application.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); } // handles okbutton action event private void validatedate() { /* 값을넣지않은필드가있는지체크 gettext() 사용 */ JOptionPane.showMessageDialog( this, "Please fill all fields" ); 고급프로그래밍 Swing Component 프로그래밍 7
실습과제 7-1(5) // first name 으로입력한값이정규표현에맞는지체크 else if (!firsttextfield.gettext().matches( "[a-za-z]{2,}" ) ) JOptionPane.showMessageDialog( this, "Invalid first name" ); // last name 으로입력한값이정규표현에맞는지체크 // address 으로입력한값이정규표현에맞는지체크 // password 으로입력한값이정규표현에맞는지체크 // repeat password 으로입력한값이정규표현에맞는지체크 // phone number ㅍ으로입력한값이정규표현에맞는지체크 else // 모든정보가맞을경우 JOptionPane.showMessageDialog( this, "Thank you" ); } // end method validatedate } // end class ValidateFrame 고급프로그래밍 Swing Component 프로그래밍 8
실습과제 7-1 실행결과 고급프로그래밍 Swing Component 프로그래밍 9
실습과제 7-2 ( 숫자맞추기 ) Math.random()(0.0~ 1.0 사이의 double 값반환 ) 을사용하여 1~1000 사이의수를생성한다. 생성된숫자를사용자가숫자를입력하여맞추는숫자맞추기게임을작성한다. 사용자입력은 TextField를통해엔터키를누르면값을입력받는다.( 입력값 int형으로변환필요 ) 입력값이맞출값 ( 랜덤값 ) 보다작으면파란색배경화면, 크면빨간색배경화면, 일치할경우회색배경화면으로전환한다. [New Game] 버튼을통해새로운게임을시작한다. 고급프로그래밍 Swing Component 프로그래밍 10
실습과제 7-2 ( 실행결과 ) 고급프로그래밍 Swing Component 프로그래밍 11
실습과제 7-2 ( 실행결과 ) 고급프로그래밍 Swing Component 프로그래밍 12
실습과제 7-3 스윙을이용한은행관리프로그램을작성한다. 다양한 Layout을적용할수있다. JButton, JTextField와같은여러가지 Components등을사용할수있다. GUI 프로그램으로부터입력을받아 Bank 클래스를조작할수있다. Java 프로그래밍 Swing 을사용한사용자인터페이스 13
실습과제설명 Bank GUI 와기존 Banking 패키지를이용하여간단한은행관리프로그램을만든다. Bank 는은행에서사용하는 GUI 부분으로 Customer 와 Account 에관련된모든일을수행한다. Bank 에서는 < 고객추가 >, < 계좌추가 >, < 계좌정보 > 의기능을가진다. < 고객추가 > 는고객이름, 연락처, 성별등을입력받아고객을등록시킨다. < 계좌추가 > 는생성된고객에대한계좌번호, 계좌타입, 초기금액을입력받아계좌를생성한다. < 계좌정보 > 는고객에따른계좌타입, 계좌번호, 초기금액등을보여준다. Java 프로그래밍 Swing 을사용한사용자인터페이스 14
Bank GUI UML(1) BANK GUI Bank Information +JLabel : title +Jlist : printinfo +JButton : addcustomer, addaccout, printaccoutinfo, end Java 프로그래밍 Swing 을사용한사용자인터페이스 15
Bank GUI UML(2) BANK GUI Customer Infomaition +JLabel : Name, Phone +JTextField :Name, Phone +JRadioButton : Male, Female +JButton : AddCustomer, Cacel Account Information +JLabel : Name, Balance, Account +JcomboBox : Name, AccountType +JTextField : Account, Balance +JButton : AddAccount, Cancel Java 프로그래밍 Swing 을사용한사용자인터페이스 16
Bank 클래스 UML Bank -numberofcustomers : int +Bank() +addcustomer( n : String, p : String, s String ) +getnumofcustomers() : int +getcustomer( index : int ) : Customer Java 프로그래밍 Swing 을사용한사용자인터페이스 17
Customer 클래스 UML Customer -name : String -phone : String -sex : String -numberofaccounts : int +Customer( n : String, p : String, s : String) +getname() : String +getphone() : String +getsex() : String +addaccount( accnt : Account ) +getaccount( index : int ) : Account +getnumofaccounts() : int Java 프로그래밍 Swing 을사용한사용자인터페이스 18
Account 클래스 UML Account -acctnumber : String -balance : double +Account( acct_num : String, init_balance : double ) +getaccoutnumber() : String +getaccouttype() : String +getbalance() : double +deposit( amt : double ) : boolean +withdraw( amt : double ) : boolean Java 프로그래밍 Swing 을사용한사용자인터페이스 19
SavingsAccount 클래스 UML SavingsAccount +SavingsAccount(acct_num : String, init_balance : double ) +getaccouttype() : String Java 프로그래밍 Swing 을사용한사용자인터페이스 20
CheckingAccount 클래스 UML CheckingAccout +CheckingAccount(acct_num : String, init_balance : double ) +getaccouttype() : String Java 프로그래밍 Swing 을사용한사용자인터페이스 21
Banking 패키지 Java 프로그래밍 Swing 을사용한사용자인터페이스 22
실행결과 (1) - 메인화면 Java 프로그래밍 Swing 을사용한사용자인터페이스 23
실행결과 (2) - 고객추가 Java 프로그래밍 Swing 을사용한사용자인터페이스 24
실행결과 (3) 계좌추가 Java 프로그래밍 Swing 을사용한사용자인터페이스 25
실행결과 (4) - 계좌정보 Java 프로그래밍 Swing 을사용한사용자인터페이스 26