반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

비전공개미 개발노트

Java 8일차 - GUI(채팅프로그램 꾸미기) 본문

프로그래밍/Java

Java 8일차 - GUI(채팅프로그램 꾸미기)

비전공개미 2022. 9. 28. 17:23
반응형
SMALL
//Memo.java
package net.bit.day26;

import java.awt.Button;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Memo extends Frame implements ActionListener {
	//틀 JPanel, Panel, Dialog대화상자
	Panel pan = new Panel();
	Button bok = new Button(" send ");
	Button bcancel = new Button(" reset ");
	Button bexit = new Button(" exit ");
	TextArea area = new TextArea(); //멀티라인 = 가로+세로
	TextField message = new TextField(20);
	public Memo() {
		//Panel은 왼쪽에서 오른쪽 레이아웃 FlowLayout, Frame은 레이아웃이 동서남북센터 BoardLayout
		pan.add(message); 
		pan.add(bok);
		pan.add(bcancel);
		pan.add(bexit);
		
		area.setFont(new Font("궁서체",Font.BOLD, 20));
		
		//this.add("East", new Label());
		//this.add("West", new Label());
		this.add("South", pan);
		//this.add("North", new Label());
		this.add("Center", area);
		
		//현재클래스 Memo를 가르키는 키워드 this, 생성자에서 this생략가능함
		this.setTitle("초간단 대화내용");
		this.setBackground(Color.GREEN);
		this.setBounds(100, 100, 400, 600);
		this.setVisible(true); //기술안할시 화면안보임
		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.out.println("윈도우창 종료를 익명의 클래스로 구현");
				System.exit(1);
			}
		});
		//this.addWindowListener(new MyExit()); //결과는 동일
		message.addActionListener(this);
		bok.addActionListener(this);
		bcancel.addActionListener(this);
		bexit.addActionListener(this);
	} //기본생성자
	
	public class MyExit extends WindowAdapter{
		public void windowClosing(WindowEvent e) {
			System.out.println("윈도우창 종료를 내부클래스로 구현");
			System.exit(1);
		}
	}
	
	//public Memo() {
		//this.bok = new Button("데이터전송");
		//this.bcancel = new Button("입력취소");
	//}

	public Memo(String kind) {	} //매개인자가 있는 생성자
	
	public static void main(String[] args) {
		new Memo();
		
	}

	@Override
	public void actionPerformed(ActionEvent ae) {
		if(ae.getSource() == message) {
			sendmessage();
		}else if(ae.getSource() == bok) {
			sendmessage(); //send버튼 클릭시 메세지전송
		}else if(ae.getSource() == bcancel) {
			area.setText(""); //reset버튼 클릭시 대화내용 전체삭제
		}else if(ae.getSource() == bexit) {
			System.out.println("프로그램을 종료합니다.");
			System.exit(0); //exit버튼 클릭시 프로그램 종료
		}else { }
		
	}
	
	public void sendmessage() {
		area.append(message.getText() + "\n");
		message.setText(""); //send로 메세지를 전송하면 글자입력창에 글자를 없앤다
	}

}

 

Memo.java 실행화면

send버튼 - TextArea에 append되고 message칸의 텍스트를 setText(" "); 비운다.

reset버튼 - TextArea의 내용을 setText(" "); 비운다.

exit버튼   - System.exit(0); 프로그램 종료

반응형
LIST
Comments