1) 다이얼 로그창 (Dialog)

 

다이얼 로그창은 사용자에게 값을 입력받기 위한 최상단의 창이다. 보통은 Yes or No, Ok or Cancel 같은 대답을 요구한다. 대답을 요구하기 때문에 Dailog (대화) 라고 한다. 딱히 대답하고 싶지 않아도 프로그램을 진행하기 위해 누르는 경우가 많다는게 함정...

 

보통 OK를 입력 받으면 창이 사라진다. 그래서 최대화나 최소화 버튼이 없다.

 

Dialog 가 Window 클래스를 상속받는 것을 보면 Frame과 같은 계층에 있다. Dialog 도 독립된 기능을 하는 윈도우 창이다. 소스코드를 보면 setSize나 setVisible 메서드도 Frame 과 똑같다. 레이블과 버튼을 붙이는 방법도 같다.

 

d.add(new Label("Click button to continue.")); 이렇게 한 것은 add 메서드에 익명클래스를 그냥 넘겨준 것이다. add 메서드의 매개변수는 Label 같은 컴포넌트의 인스턴스인데 한번 사용하고 사라진다고 보고 익명으로 참조값(주소)만 넘겨준 것이다. 코드가 간단해지는 장점이 있다.

 

OK 라는 버튼에 액션리스너를 연결한다. 이것도 익명 클래스이다. ActionListener를 implements 하면 actionPerformed를 구현하도록 되있다. 익명 클래스를 사용하려다 보니 Dialog 클래스를 static으로 지정하였다. setVisible (false)로 보이지 않게된다. (물론 아직 메모리에 살아있다)

 

나머지는 7장에서 반복되는 코드들이다.

 

다이얼 로그창

import java.awt.*;
import java.awt.event.*;


public class AwtGUI4  {
	
	private static Dialog d;  
	 
	AwtGUI4(){
		
        Frame f= new Frame();
        f.setSize(300,300);
        d = new Dialog(f , "Dialog Example", true);  
        d.setLayout(new FlowLayout());  
	    Button b = new Button ("OK");  
	    b.addActionListener (new ActionListener(){  
	    	 public void actionPerformed( ActionEvent e )  
	            {  
	               AwtGUI4.d.setVisible(false);  
	            }  
	        });  
	     d.add(new Label("Click button to continue."));  
	     d.add(b);         
	     d.setSize(300,200);          
	     d.setVisible(true);
	
	     f.setTitle("JAVA AWT GUI");
	     f.setLayout(null);	
	     f.setVisible(true);
	     
	     f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
	}

	public static void main(String[] args) {
		new AwtGUI4();
		System.out.println("Nice to be alive!");

	}
}

2) 툴킷 클래스

 

추상적 윈도우에 대한 많은 메서드를 담고 있는 클래스이다. 추상적이라는 말만큼 윈도우의 다양한 일반적 속성들에 관련된 클래스이다.

 

간단한 예제를 보자.

import java.awt.Dimension;
import java.awt.Toolkit;

public class AwtGUI5  {
	AwtGUI5(){}

	public static void main(String[] args) {
		
		Toolkit t = Toolkit.getDefaultToolkit();    
		System.out.println("Screen resolution = " + t.getScreenResolution());  
		Dimension d = t.getScreenSize();    
		System.out.println("Screen width = " + d.width);     
		System.out.println("Screen height = " + d.height);
		
		// footer
		System.out.println();
		System.out.println("Nice to know you!");
	}
}

Toolkit

모니터(전체 스크린)에 대한 내용을 콘솔에 출력한다. Dimension 은 스크린의 좌표를 나타내는 참조 변수이다.

* 다음은 윈도우의 비프음 (윈도우의 띠리링 사운드)을 내는 소스코드이다.

import java.awt.Button;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class AwtGUI6  {
	 
	AwtGUI6(){	
	}

	public static void main(String[] args) {
		
	    Frame f=new Frame("ToolkitExample");  
	    Button b=new Button("beep");  
	    b.setBounds(50,100,60,30);  
	    f.add(b);     
	    f.setSize(300,300);  
	    f.setLayout(null);  
	    f.setVisible(true);  
	    b.addActionListener(new ActionListener(){  
	        public void actionPerformed(ActionEvent e){  
	            Toolkit.getDefaultToolkit().beep();  
	        }  
	    });      
	}
}

getDeaultToolkit( ) 은 static 인 Toolkit 클래스의 toolkit 변수를 Return 한다. 즉 Toolkit.toolkit.beep( ); 이다. 

 

버튼에 액션리스너를 추가했다. 버튼을 클릭하면 윈도우 비프음을 들을 수 있다.

 

beep

공유하기

facebook twitter kakaoTalk kakaostory naver band