windows programming
윈도우 프로그래밍
1. AWT (Abstract Window Toolkit ) -> Swing
2. 3요소
1) 재료 : component
- java.awt 패키지
- Button, Canvas, Checkbox, Choice, Container, Label, List,
-container
panel
Applet
winldows
Dialog
Frame (크기 를 정하고 보여줄 수 있게 설정 )
-dialog common dialog(내장 다이얼로그, 시스템 다이얼로그)
user Definedialog ( dialog를 상속 )
Modal 과 // 현재작업이 종료되지않으면 다른작업 ㄴㄴ
Modaless // 현재작업 ㄴㄴ해도 다른작업 ㅇㅇ
2) 디자인 (배치) : LayOut
- 재료(component)를 원하는 위치에 배치
-레이아웃 매니저
FlowLayout
: 순서대로
: 패널
BorderLayout
: 테두리를 기준으로 배치 (동, 서, 남, 북, 중)
: window 의 기본 레이아웃
GridLayout
: 테이블 모양으로 배치
GridBagLayout
: 불규칙 테이블 모양으로 배치
CardLayout
: 보더레이아웃 처럼 배치를 해놓고 화면전환용 으로 이용가능
3) 동작 : Event
1) 이벤트 소스
2) 이벤트 클래스
java.util.EventObject
java.awt.AWTEvent
ActionEvent : 컴퍼넌트 가 활성화 됨 / 거의모든이벤트에 적용가능
AdjustmentEvent : 스크롤바 와 같이 조정 가능한 컴퍼넌트 에서 발생
ComponentEvent
ContainerEvent : 컨테이너에 다른 컴퍼넌트가 추가 삭제
FocusEvent : 컴퍼넌트에 포커스가 들어왔을때 발생
InputEvent
KeyEvent
MouseEvent
PaintEvent : 컴퍼넌트가 다시 그려질때 발생
WindowEvent : 윈도우가 활성화 되거나, 닫힐때 발생
ItemEvent : List 나 Choice 처럼 선택 항목이 존재하는 컴퍼넌트 에서 발생
TextEvent : TextComponent 에서 내용이 변경될 때 발생
3) 이벤트 핸들러 ( 인터페이스 )
- 이벤트 처리
-클래스이름 Listener
-이벤트 소스와 이벤트 핸들러 연결
[이벤트소스].add인터페이스명(참조변수)
4) 이벤트 처리방식
- 이벤트 소스와 이벤트 핸들러가 같은 클래스인 경우
- 이벤트 소스와 이벤트 핸들러가 다른 클래스인 경우
- 내부 클래스
- 무명 클래스
3. 분야
1)어플리케이션
2) 애플릿
4. 메뉴
1) Pull-Down Menu(고정식 메뉴 // 상단메뉴바)
2) Pop-Up Menu ( 이동식 //우클릭메뉴 )
(1) 마우스 오른쪽버튼 or 키보드 컨텍스트 키
=================================================================
Image - E:\workspace\150923_window_Sync\bin\resource
=================================================================
Event
==============================================================================
************************************************************************************************************
=================================================================
AdapterTest1
=================================================================
package Event_150924;
import java.awt.Frame;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class AdapterTest1 extends Frame implements WindowListener{
public AdapterTest1(){
addWindowListener(this);
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
// TODO Auto-generated method stub
AdapterTest1 test = new AdapterTest1();
test.setSize(300,400);
test.setVisible(true);
}
}
=================================================================
창만들기 AdaptTest2
=================================================================
package Event_150924;
import java.awt.Frame;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class AdapterTest2 extends Frame {
public AdapterTest2(){
addWindowListener(new WindowClose());
}
public static void main(String[] args) {
// TODO Auto-generated method stub
AdapterTest2 test = new AdapterTest2();
test.setSize(300,400);
test.setVisible(true);
}
}
=================================================================
버튼누르기 EventTest1
=================================================================
package Event_150924;
import java.awt.Button;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class EventTest1 extends Frame implements ActionListener {
Button b1, b2; // Mouse Keyboard Focus
TextArea ta;
public EventTest1() {
b1 = new Button("Push plz");
b2 = new Button("Exit");
ta = new TextArea();
add("North", b1);
add("Center", ta);
add("South", b2);
b1.addActionListener(this);
b2.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getActionCommand().equals("Push plz")) {
ta.setText(ta.getText() + "push the Button...\n");// 글자를 추가로계속 입력
}
else {
System.exit(0);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
EventTest1 test = new EventTest1();
test.setSize(300, 400);
test.setVisible(true);
}
}
=================================================================
버튼누르기 EventTest2
=================================================================
package Event_150924;
import java.awt.Button;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
class EventDemo2 implements ActionListener {
private TextArea ta;
private Frame f;
EventDemo2(TextArea t, Frame f) {
ta = t;
this.f = f;
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Push plz")) {
ta.setText(ta.getText() + "push the Button...\n");// 글자를 추가로계속 입력
} else {
// System.exit(0);
// dispose()로 처리
f.dispose();
}
}
}
public class EventTest2 extends Frame {
Button b1, b2; // Mouse Keyboard Focus
TextArea ta;
public EventTest2() {
b1 = new Button("Push plz");
b2 = new Button("Exit");
ta = new TextArea();
add("North", b1);
add("Center", ta);
add("South", b2);
EventDemo2 demo = new EventDemo2(ta, this);
b1.addActionListener(demo);
b2.addActionListener(demo);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
EventTest2 test = new EventTest2();
test.setSize(300, 400);
test.setVisible(true);
}
}
=================================================================
과일 남자여자 ItemEventTest1
=================================================================
package Event_150924;
import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class ItemEventTest1 extends Frame implements ItemListener{
Panel p;
Checkbox c1,c2,c3,r1,r2;
CheckboxGroup cg;
TextArea area;
public ItemEventTest1(){
addWindowListener ( new WindowClose());
p = new Panel();
c1 = new Checkbox("딸기");
c2 = new Checkbox("사과");
c3 = new Checkbox("초록색");
cg = new CheckboxGroup();
r1 = new Checkbox("남성", cg, true);
r2 = new Checkbox("여성", cg, false);
area = new TextArea();
p.add(c1);
p.add(c2);
p.add(c3);
p.add(r1);
p.add(r2);
add("North",p);
add("Center", area);
c1.addItemListener(this);
c2.addItemListener(this);
c3.addItemListener(this);
r1.addItemListener(this);
r2.addItemListener(this);
}
@Override
public void itemStateChanged(ItemEvent e) {
Checkbox c = (Checkbox)e.getSource();
/*
if(c.getLabel().equals("딸기")){
if(c.getState() == true){
area.setText("딸기가 선택되었습니다.");
}
else{
area.setText("딸기가 해제되었습니다.");
}
}
else if(c.getLabel().equals("사과")){
if(c.getState() == true){
area.setText("사과가 선택되었습니다.");
}
else{
area.setText("사과가 해제되었습니다.");
}
}
else if(c.getLabel().equals("초록색")){
if(c.getState() == true){
area.setText("초록색 선택되었습니다.");
}
else{
area.setText("초록색 해제되었습니다.");
}
}
*/
if(c.getState() == true){
area.setText( c.getLabel() + "이(가) 선택되었습니다.");
}
else{
area.setText(c.getLabel() + "이(가) 해제되었습니다.");
}
}
public static void main(String[] args) {
ItemEventTest1 test = new ItemEventTest1();
test.setSize(300, 400);
test.setVisible(true);
}
}
================================================================
서울인천경기 출력 [미완] ItemEventTest2
=================================================================
package Event_150924;
import java.awt.Button;
import java.awt.Choice;
import java.awt.Frame;
import java.awt.List;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class ItemEventTest2 extends Frame implements ItemListener , ActionListener{
private String[] items = {"서울", "인천", "수원", "경기", "독도"};
Choice choice;
TextArea area;
List list;
Panel p;
Button b;
public ItemEventTest2(){
addWindowListener(new WindowClose());
choice = new Choice();
area = new TextArea();
list = new List();
p = new Panel();
b = new Button("list 출력");
p.add(choice);
p.add(list);
p.add(b);
add("North",p);
add("Center",area);
for (String s : items ) {
choice.addItem(s);
list.add(s);
}
list.setMultipleMode(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ItemEventTest2 test = new ItemEventTest2();
test.setSize(300, 400);
test.setVisible(true);
}
@Override
public void itemStateChanged(ItemEvent e) {
// Choice choice = area
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
}
=================================================================
글씨쓰기
=================================================================
package Event_150924;
import java.awt.Button;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.TextEvent;
import java.awt.event.TextListener;
public class TextEventTest extends Frame implements TextListener,KeyListener{
Button b;
TextArea area;
TextField field;
public TextEventTest(){
addWindowListener(new WindowClose());
b = new Button("OK");
area = new TextArea();
field = new TextField();
add("North", b);
add("Center", area);
add("South", field);
field.addTextListener(this);
field.addKeyListener(this);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TextEventTest test = new TextEventTest();
test.setSize(300, 400);
test.setVisible(true);
}
@Override
public void textValueChanged(TextEvent e) {
// TODO Auto-generated method stub
//area.setText(area.getText() + "내용이 바꼇음 : " + field.getText() + "\n");
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
//area.setText(area.getText() + "내용이 바꼇음 : " + field.getText() + "\n");
//area.setText(area.getText() + "내용이 바꼇음 : " + e.getKeyChar() + "\n");
if (e.getKeyChar()!= KeyEvent.VK_BACK_SPACE) //백스페이스 를 문자값이 아닌, 정말 백스페이스로 사용
area.setText(area.getText() + "내용이 바꼇음 : " + e.getKeyChar()+"\n");//백스페이스 를 문자값이 아닌, 정말 백스페이스로 사용
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
=================================================================
윈도우창 닫기버튼 Window close
=================================================================
package Event_150924;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
public class WindowClose extends WindowAdapter
{
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
=================================================================
Menu - 메뉴
=================================================================
package Menu;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import Event_150924.WindowClose;
public class MenuTest1 extends Frame implements ActionListener{
MenuBar bar;
Menu file, edit, file_open;
MenuItem file_save, file_exit;
MenuItem edit_copy, edit_paste, edit_cut;
public MenuTest1() {
addWindowListener(new WindowClose());
bar = new MenuBar();
file = new Menu("파일");
edit = new Menu("편집");
file_open = new Menu("파일 열기");
file_save = new MenuItem("파일 저장");
file_exit = new MenuItem("종료");
edit_copy = new MenuItem("복사하기");
edit_paste = new MenuItem("붙여넣기");
edit_cut = new MenuItem("잘라내기");
MenuItem file_open_text = new MenuItem("텍스트 파일");
MenuItem file_open_image = new MenuItem("이미지 파일");
file_open.add(file_open_text);
file_open.add(file_open_image);
file.add(file_open);
file.add(file_save);
file.addSeparator();
file.add(file_exit);
edit.add(edit_copy);
edit.add(edit_cut);
edit.add(edit_paste);
bar.add(file);
bar.add(edit);
setMenuBar(bar);
file_exit.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
public static void main(String[] args) {
MenuTest1 test = new MenuTest1();
test.setSize(300, 400);
test.setVisible(true);
}
}
=================================================================
package Menu;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import Event_150924.WindowClose;
public class MenuTest2 extends Frame implements ActionListener{
MenuBar bar;
Menu file;
MenuItem file_open, file_save, file_exit;
TextArea area;
FileDialog fopen, fsave;
public MenuTest2() {
addWindowListener(new WindowClose());
bar = new MenuBar();
file = new Menu("파일");
file_open = new MenuItem("파일 열기");
file_save = new MenuItem("파일 저장");
file_exit = new MenuItem("종료");
area = new TextArea();
fopen = new FileDialog(this, "파일 열기", FileDialog.LOAD);
fsave = new FileDialog(this, "파일 저장", FileDialog.SAVE);
file.add(file_open);
file.add(file_save);
file.addSeparator();
file.add(file_exit);
bar.add(file);
setMenuBar(bar);
add("Center", area);
file_exit.addActionListener(this);
file_open.addActionListener(this);
file_save.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("종료")){
System.exit(0);
}
else if(e.getActionCommand().equals("파일 열기")){
try{
fopen.setVisible(true);
String filename = fopen.getDirectory() + "\\" + fopen.getFile();
BufferedReader br =
new BufferedReader(new FileReader(filename));
String str;
while((str=br.readLine()) != null){
area.append(str + "\n");
}
br.close();
}
catch(Exception err){}
}
else{
fsave.setVisible(true);
}
}
public static void main(String[] args) {
MenuTest2 test = new MenuTest2();
test.setSize(300, 400);
test.setVisible(true);
}
}
=================================================================
Swing - 스윙
=================================================================
package Swing;
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
public class SwingTest1 extends JFrame {
JButton b,a ;
ImageIcon icon1, icon2, icon3, icon4;
SwingTest1() {
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
a = new JButton("버튼");
b = new JButton("버튼");
icon1 = new ImageIcon(getClass().getResource("/resource/6.png"));
icon2 = new ImageIcon(getClass().getResource("/resource/5.png"));
icon3 = new ImageIcon(getClass().getResource("/resource/7.png"));
icon4 = new ImageIcon(getClass().getResource("/resource/8.png"));
b.setIcon(icon1);
b.setPressedIcon(icon2);
a.setIcon(icon3);
a.setPressedIcon(icon4);
add(b);add(a);
}
public static void main(String[] args) {
SwingTest1 test = new SwingTest1();
test.setSize(1510,165);
test.setVisible(true);
}
}
=================================================================
package Swing;
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
public class SwingTest2 extends JFrame{
JButton b;
JLabel lab;
ImageIcon icon1;
SwingTest2(){
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
icon1 = new ImageIcon(getClass().getResource("/resource/duke_hips.gif"));
b = new JButton("버튼");
lab = new JLabel("스윙라벨 입니다.", icon1, JLabel.LEFT);
lab.setBorder(new EtchedBorder(Color.RED, Color.GRAY));
b.setBorder(new BevelBorder(BevelBorder.LOWERED));
add(b);
add(lab);
}
public static void main(String[] args) {
SwingTest2 test = new SwingTest2();
//test.setSize(300, 400);
test.pack();
test.setVisible(true);
}
}
=================================================================
package Swing;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
public class SwingTest3 extends JFrame{
JTextField field;
JButton btn;
JLabel lab;
SwingTest3(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
field = new JTextField(30);
btn = new JButton("확인");
lab = new JLabel("안녕하세요.....");
add("Center", field);
add("East", btn);
add("South", lab);
field.addKeyListener(new KeyHandler());
}
class KeyHandler extends KeyAdapter{
@Override
public void keyTyped(KeyEvent e) {
//f(field.getText().isEmpty()){
//JOptionPane.showMessageDialog(null, "반드시 데이터 입력");
//JOptionPane.showConfirmDialog(null, "예/아니오 중에서 선택", "예/아니오", JOptionPane.YES_NO_OPTION);
//JOptionPane.showInputDialog("데이터 입력");
//}
if(e.getKeyChar() == KeyEvent.VK_ENTER){
lab.setText(field.getText());
}
}
}
public static void main(String[] args) {
SwingTest3 test = new SwingTest3();
test.setSize(300, 400);
test.setVisible(true);
}
}
댓글 없음:
댓글 쓰기