package pack.awt;
import java.awt.Button;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Memojang extends Frame implements ActionListener{
private static final long serialVersionUID = 1L;
Button btnCopy = new Button("copy");
Button btnPaste = new Button("paste");
Button btnCut = new Button("cut");
Button btnDel = new Button("del");
TextArea txtMemo = new TextArea("", 10, 40); // TextArea(초기값,행,열)
Panel pn = new Panel();
String copyText;
//메뉴
MenuItem mnuNew, mnuSave, mnuOpen, mnuExit;
MenuItem mnuCopy, mnuPaste, mnuCut, mnuDel;
MenuItem mnuAbout, mnuEtc1, mnuEtc2;
public Memojang() {
super("메모장");
setBounds(200, 200, 400, 300);
setVisible(true);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
initLayout();
menuLayout();
}
private void menuLayout() {
MenuBar menuBar = new MenuBar(); //메뉴바
Menu mnuFile = new Menu("File"); //주메뉴
mnuNew = new MenuItem("New"); //부메뉴..
mnuOpen = new MenuItem("Open...");
mnuSave = new MenuItem("Save...");
mnuExit = new MenuItem("Exit");
mnuFile.add(mnuNew);
mnuFile.add(mnuOpen);
mnuFile.add(mnuSave);
mnuFile.addSeparator(); //구분선
mnuFile.add(mnuExit);
Menu mnuEdit = new Menu("Edit"); //주메뉴
mnuCopy = new MenuItem("Copy", new MenuShortcut(KeyEvent.VK_C)); //부메뉴.. MenuShortcut(단축키)
mnuPaste = new MenuItem("Paste", new MenuShortcut(KeyEvent.VK_V));
mnuCut = new MenuItem("Cut", new MenuShortcut(KeyEvent.VK_X));
mnuDel = new MenuItem("Del", new MenuShortcut(KeyEvent.VK_DELETE));
mnuEdit.add(mnuCopy);
mnuEdit.add(mnuPaste);
mnuEdit.add(mnuCut);
mnuEdit.add(mnuDel);
Menu mnuHelp = new Menu("Help");
mnuAbout = new MenuItem("Memo About...");
mnuHelp.add(mnuAbout);
Menu mnuEtc = new Menu("Etc");
mnuEtc1 = new MenuItem("calc");
mnuEtc2 = new MenuItem("free");
mnuEtc.add(mnuEtc1);
mnuEtc.add(mnuEtc2);
menuBar.add(mnuFile); //메뉴바에 주메뉴 등록
menuBar.add(mnuEdit); //메뉴바에 주메뉴 등록
menuBar.add(mnuHelp); //메뉴바에 주메뉴 등록
menuBar.add(mnuEtc); //메뉴바에 주메뉴 등록
this.setMenuBar(menuBar); //frame에 메뉴바 등록
}
private void initLayout() {
pn.add(btnCopy);
pn.add(btnPaste);
pn.add(btnCut);
pn.add(btnDel);
this.add("South", pn);
this.add("Center", txtMemo);
//리스너 장착
btnCopy.addActionListener(this);
btnPaste.addActionListener(this);
btnCut.addActionListener(this);
btnDel.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btnCopy){
copyText = txtMemo.getSelectedText(); //선택한 범위내 문자열을 리턴
}else if(e.getSource() == btnPaste){
int position = txtMemo.getCaretPosition();
txtMemo.insert(copyText, position); // insert(붙여넣을문자, 위치)
}else if(e.getSource() == btnCut){
copyText = txtMemo.getSelectedText();
int start = txtMemo.getSelectionStart();
int end = txtMemo.getSelectionEnd();
txtMemo.replaceRange("", start, end); // 해당위치에 해당문자열을 넣어준다.
}else if(e.getSource() == btnDel){
int start = txtMemo.getSelectionStart();
int end = txtMemo.getSelectionEnd();
txtMemo.replaceRange("", start, end);
}
txtMemo.requestFocus();
}
public static void main(String[] args) {
new Memojang();
}
}
'자바' 카테고리의 다른 글
Swing 예제 (0) | 2014.02.27 |
---|---|
AWT 레이아웃의 종류 (0) | 2014.02.25 |
동기화 synchronized (0) | 2014.02.25 |
쓰레드로 만든 시계 (0) | 2014.02.24 |
내부클래스 (0) | 2014.02.21 |