관리 메뉴

nkdk의 세상

자바 Language 15일째 본문

My Programing/JAVA

자바 Language 15일째

nkdk 2008. 3. 8. 01:12
// 기타 콤포넌트에 대해서 설명 하겠습니다.

package gui;
import java.awt.*;
import java.awt.event.*;
import java.util.*; // random 클래스를 쓰기 위해서 호출한다.

public class EtcComponent extends Frame implements ItemListener, ActionListener{ // 이건 아이템 리스너 이다.
private Checkbox rad1, rad2, rad3, chk1, chk2, chk3;
Choice cho;
Panel pn1, pn2;
Color c;
int sel=1; // 선인지 원인지 구분할 때 사용
Button btnOk;


public EtcComponent() {
pn1=new Panel();
// Radio버튼 만들기
CheckboxGroup group=new CheckboxGroup(); // awt에서는 라디오 버튼 같은 것을 그룹화 시켜주어야 한다.
rad1=new Checkbox("선", group,true);
rad2=new Checkbox("원", group,false);
rad3=new Checkbox("네모", group,false);
rad1.addItemListener(this);
rad2.addItemListener(this);
rad3.addItemListener(this);
pn1.add(rad1);
pn1.add(rad2);
pn1.add(rad3);
// Choice 버튼으로 고르는 것을 선택할때 사용 한다.
cho =new Choice();
cho.addItem("검정");
cho.addItem("노랑");
cho.addItem("파랑");
cho.addItem("빨강");
cho.addItemListener(this);
pn1.add(new Label("색상선택"),Label.RIGHT);
pn1.add(cho);

// CheckBox를 구경합니다.
pn2 = new Panel();
chk1=new Checkbox("한국",true);
chk2=new Checkbox("일본",false);
chk3=new Checkbox("미국",false);
btnOk=new Button("확인");
btnOk.addActionListener(this);
pn2.add(new Label("살고 싶은 나라 :"));
pn2.add(chk1);
pn2.add(chk2);
pn2.add(chk3);
pn2.add(btnOk);

// this.add("North",pn1); 이렇게 주는 방법도 있다.
this.add(pn1,BorderLayout.NORTH);
this.add(pn2,BorderLayout.SOUTH);

//this.add(pn1,BorderLayout.NORTH); // 프레임 컴포넌트를 배치 할 때 이런 식으로 사용할 수 있다.
this.setBounds(200,100,400,300);
this.setVisible(true);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public static void main(String[] args) {
new EtcComponent();

}
public void itemStateChanged(ItemEvent e) {
if(e.getSource()==rad1) sel=1;
else if (e.getSource()==rad2) sel=2;
else if (e.getSource()==rad3) sel=3;

if(e.getItem().equals("검정")) c=Color.black;
else if (e.getItem().equals("파랑")) c=Color.blue;
else if (e.getItem().equals("노랑")) c=Color.yellow;
else if (e.getItem().equals("빨강")) c=Color.red;

repaint(); // 그리기 위해서 호출
}

public void paint(Graphics g) {
g.setColor(c); // 전역 변수 c에 대한 색을 가져와서 넣는다.
Random aa=new Random(); // int형을 리턴하기 때문에 쓸만 하다.
int x=aa.nextInt(100); // 1~100사이에 난수를 발생 시킨다.
int y=aa.nextInt(100); // 1~100사이에 난수를 발생 시킨다.
int w=aa.nextInt(300); // 1~300사이에 난수를 발생 시킨다.
int h=aa.nextInt(300); // 1~300사이에 난수를 발생 시킨다.
switch(sel) {
case 1: g.drawLine(x,y,w,h); // 선을 그린다.
break;
case 2: g.drawOval(x, y, w, h); // 원을 그린다.
break;
case 3: g.drawRect(x, y, w, h); // 네모를 그린다.
break;
}
}

public void actionPerformed(ActionEvent e) {
String ss="";
if(chk1.getState()==true) ss +=chk1.getLabel();
if(chk2.getState()==true) ss +=chk2.getLabel();
if(chk3.getState()==true) ss +=chk3.getLabel();
super.setTitle(ss);
}
}

// 키 테스트 함수

package gui;
import java.awt.*;
import java.awt.event.*;

public class KeyTest extends Frame{

Point start=new Point(100,100);
Point end=new Point(100,100);

public KeyTest() {
super("선그리기");
this.addKeyListener(new Kevent());
setBounds(100,100,300,300);
setVisible(true);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public class Kevent extends KeyAdapter{

public void keyPressed(KeyEvent e) {
int keycode=e.getKeyCode();
int d; // 이동량
if((e.getModifiers() & InputEvent.SHIFT_MASK) !=0)
d=10;
else d=1;
if(keycode==KeyEvent.VK_LEFT) add(-d,0);
else if(keycode==KeyEvent.VK_UP) add(0,-d);
else if(keycode==KeyEvent.VK_DOWN) add(0,d);
else if(keycode==KeyEvent.VK_RIGHT) add(d,0);
}
public void add(int dx, int dy) {
end.x += dx;
end.y += dy;
repaint();
}
}
public void update(Graphics g) {
paint(g);
}

public void paint(Graphics g) {
g.setColor(Color.red);
g.drawLine(start.x, start.y, end.x, end.y);
start.x = end.x;
start.y = end.y;
}
public static void main(String[] args) {
new KeyTest();
}
}


// 이미지 테스트 함수

package gui;
import java.awt.*;
import java.awt.event.*;

public class ImageTest extends Frame implements ItemListener{
Image img;
boolean qzoom=false;
Checkbox chkzoom;
Choice cho;
int sel=1;

public ImageTest() {
Panel pn=new Panel();
Label lbl=new Label("그림을 선택하라");
cho=new Choice();
cho.addItem("그림1");
cho.addItem("그림2");
cho.addItem("그림3");
cho.addItemListener(this);
pn.add(lbl);
pn.add(cho);
this.add("North", pn);

Panel pn2=new Panel();
chkzoom=new Checkbox("화면 크기로 확대");
chkzoom.addItemListener(this);
pn2.add(chkzoom);
this.add("South", pn2);
this.setBounds(100,100,300,300);
setVisible(true);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public static void main(String[] args) {
new ImageTest();
}

public void itemStateChanged(ItemEvent e) {

}

public void paint(Graphics g) {

}
}