버튼을 누르면 자동으로 문이 열리는 과정을 모델링하는 문제입니다 이를 해결하는 다음 프로그램을 해석하세요
프로그램 시작
프레임에 자동문 패널을 끼우고 실행 준비 완료
프레임의 X 버튼 누르면 프로그램 종료
자동문 클래스
자동문 초기화
먼저, 자동문은 닫힌 상태로 초기화
클릭하면 반응하는 버튼을 자동문에 부착
버튼 클릭시 반응
자동문이 닫혀 있으면 열기
자동문이 열려 있으면 닫기
E001 // 이벤트 대기중
E002 // 문열기 버튼 클릭하기
E003 // 문닫기 버튼 클릭하기
// 파일명 : ./Chapter13/AutomaticDoorGUIMain.java
import javax.swing.*;
public class AutomaticDoorGUIMain
{
// 프로그램 시작
1 public static void main( String[] args ) {
// 프레임에 자동문 패널을 끼우고 실행 준비 완료
JFrame frame = new JFrame( "자동문" );
2 frame.getContentPane().add( new AutomaticDoorPanel() );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.pack();
frame.setVisible(true);
3 }
// 프레임의 X 버튼 누르면 프로그램 종료
}
// 파일명 : ./Chapter13/AutomaticDoorPanel.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
// 자동문 클래스
public class AutomaticDoorPanel extends JPanel
{
private JPanel door;
private JButton button;
private boolean open;
// 자동문 초기화
Pb public AutomaticDoorPanel() {
// 먼저, 자동문은 닫힌 상태로 초기화
door = this;
open = false;
setBackground( Color.cyan );
setPreferredSize( new Dimension( 250, 400 ) );
// 클릭하면 반응하는 버튼을 자동문에 부착
button = new JButton( "문열기" );
button.addActionListener( new ClickListener() );
add( button );
Pe }
// 버튼 클릭시 반응
private class ClickListener implements ActionListener {
@Override
Lb public void actionPerformed( ActionEvent event ) {
// 자동문이 닫혀 있으면 열기
L1 if ( open == false ) {
open = true;
door.setBackground( Color.white );
L2 button.setText( "문닫기" );
}
// 자동문이 열려 있으면 닫기
L3 else {
open = false;
door.setBackground( Color.cyan );
L4 button.setText( "문열기" );
}
Le }
}
}
※ 실행순서 및 메모리상태는 A키(이전) 및 D키(다음)를 눌러도 확인할 수 있습니다