지난 시간 복습
메모장 만들기
package com.tech.gt001.notepad;
import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.PrintStream;
import java.io.StringWriter;
import java.util.Calendar;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Notepad extends JFrame implements ItemListener, ActionListener {
public static byte[] bytecounter;
private boolean isButton = false;
private String name = "굴림";
private int style = 0;
private int fontsize = 12;
JPanel fontPanel1, fontPanel2;
Choice fontCombo1, fontCombo2, fontCombo3;
JButton fontConfirm, fontCancel;
String[] fontList = { "굴림", "굴림체", "궁서", "궁서체", "견고딕", "고딕체", "verdana" };// 폰트 콤보 리스트
String[] fontStyleList = { "보통", "기울임", "굵게" };
String[] fontSizeList = { "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "30", "40",
"60" };
JTextField txtFont, txtFontStyle, txtFontSize;// JTextField준비
JFrame fontFrame;
JMenuBar menuBar = new JMenuBar();
JMenu mnFile = new JMenu("파일(F)");
JMenu mnEdit = new JMenu("편집(E)");
JMenu mnForm = new JMenu("서식(O)");
JMenu mnHelp = new JMenu("도움말(H)");
JMenuItem new_m = new JMenuItem("새로만들기(N)");
JMenuItem open_m = new JMenuItem("열기(O)");
JMenuItem save_m = new JMenuItem("저장(S)");//
JMenuItem exit_m = new JMenuItem("종료(X)");//
JMenuItem cut_m = new JMenuItem("잘라내기(T)");//
JMenuItem copy_m = new JMenuItem("복사하기(C)");//
JMenuItem paste_m = new JMenuItem("붙여넣기(P)");//
JMenuItem allsel_m = new JMenuItem("모두선택(A)");//
JMenuItem del_m = new JMenuItem("삭제(L)");//
JMenuItem font_m = new JMenuItem("글꼴(F)...");//
JMenuItem info_m = new JMenuItem("메모장 정보(A)");
JMenuItem time_m = new JMenuItem("시간보기");//
JFileChooser jfc = new JFileChooser();
JScrollPane scrollPane = null;
JTextArea txtArea = null;
JTextField txtField = new JTextField();
public Notepad() {
// 화면구성
setTitle("메모장-제목없음");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(800,500);
// 노트패드 컴포넌트 구성
add(menuBar ,"North");
menuBar.add(mnFile);
menuBar.add(mnEdit);
menuBar.add(mnForm);
menuBar.add(mnHelp);
// 파일 메뉴에 소메뉴 추가
mnFile.add(new_m);
mnFile.add(open_m);
mnFile.add(save_m);
mnFile.addSeparator();
mnFile.add(exit_m);
mnEdit.add(cut_m);
mnEdit.add(copy_m);
mnEdit.add(paste_m);
mnEdit.add(del_m);
mnEdit.addSeparator();
mnEdit.add(allsel_m);
mnForm.add(font_m);
mnHelp.add(time_m);
mnHelp.addSeparator();
mnHelp.add(info_m);
// 센터 내용
scrollPane=new JScrollPane(txtArea=new JTextArea());//scrollPane에 txtArea 부착
add(scrollPane,"Center");
scrollPane.getVerticalScrollBar().setValue(scrollPane.getVerticalScrollBar().getMaximum());
// 스크롤 바를 최하단으로 맞춤
validate();
// font 컴포넌트 추가
fontFrame=new JFrame("글꼴");
fontPanel1=new JPanel();
fontPanel2=new JPanel();
txtFont=new JTextField(10);//글꼴
txtFontStyle=new JTextField(8);
txtFontSize=new JTextField(5);
fontConfirm=new JButton("확인");
fontCancel=new JButton("취소");
// Choice 객체 생성
fontCombo1=new Choice();
fontCombo2=new Choice();
fontCombo3=new Choice();
for (int i = 0; i < fontList.length; i++) {
fontCombo1.add(fontList[i]);
}
for (int i = 0; i < fontStyleList.length; i++) {
fontCombo2.add(fontStyleList[i]);
}
for (int i = 0; i < fontSizeList.length; i++) {
fontCombo3.add(fontSizeList[i]);
}
// 초기세팅 Choice
fontCombo1.select(0);
fontCombo2.select(0);
fontCombo3.select(4);
// fontPanel1,2에 내용 부착
fontPanel1.setLayout(new GridLayout(3,3));
fontPanel1.add(new Label("글꼴"));
fontPanel1.add(new Label("글꼴스타일"));
fontPanel1.add(new Label("크기"));
fontPanel1.add(txtFont);
fontPanel1.add(txtFontStyle);
fontPanel1.add(txtFontSize);
fontPanel1.add(fontCombo1);
fontPanel1.add(fontCombo2);
fontPanel1.add(fontCombo3);
fontPanel2.setLayout(new GridLayout(3,1));
fontPanel2.add(fontConfirm);
fontPanel1.add(fontCancel);
// fontFrame에 fontPanel1,2 부착
fontFrame.add(fontPanel1,BorderLayout.CENTER);
fontFrame.add(fontPanel2,BorderLayout.EAST);
// fontFrame에 Listener 부착
fontFrame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
fontFrame.setVisible(false);
super.windowClosing(e);
}
});
// Listener 부착
fontConfirm.addActionListener(this);
fontCancel.addActionListener(this);
fontCombo1.addItemListener(this);
fontCombo2.addItemListener(this);
fontCombo3.addItemListener(this);
fontFrame.setBounds(300,300,300,100);
// event listener 부악
new_m.addActionListener(this);
open_m.addActionListener(this);
save_m.addActionListener(this);
exit_m.addActionListener(this);
cut_m.addActionListener(this);
copy_m.addActionListener(this);
paste_m.addActionListener(this);
allsel_m.addActionListener(this);
del_m.addActionListener(this);
font_m.addActionListener(this);
time_m.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Calendar cal=Calendar.getInstance();
int year=cal.get(Calendar.YEAR);
int month=cal.get(Calendar.MONTH+1);
int day=cal.get(Calendar.DAY_OF_MONTH);
int hour=cal.get(Calendar.HOUR);
int minute=cal.get(Calendar.MINUTE);
int second=cal.get(Calendar.SECOND);
txtArea.setText(txtArea.getText()+"\n"
+year+" 년 "+month+" 월 "+day+" 일 "
+hour+" 시 "+minute+" 분 "+second+" 초 ");
}
});
info_m.addActionListener(this);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
String itemPressed=e.getActionCommand();
if(itemPressed.equals("저장(S)")) {
// 저장기능
if(jfc.showSaveDialog(this)==JFileChooser.CANCEL_OPTION) {
return;//종료
}
// 저장구현
File f=jfc.getSelectedFile();
PrintStream ps;
try {
ps=new PrintStream(f);
ps.println(txtArea.getText());
// 출력 객체를 통해 txtArea의 내용을 저장
ps.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
}
if(itemPressed.equals("열기(O)")) {
// 열기 기능
if(jfc.showSaveDialog(this)==JFileChooser.CANCEL_OPTION) {
return;//종료
}
// 열기 구현
File f=jfc.getSelectedFile();
setTitle(f.getName());
try {
FileReader fr=new FileReader(f);
StringWriter sw=new StringWriter();
while(true) {
int ch=fr.read();
if(ch==-1) break;
sw.write(ch);
}
txtArea.setText(sw.toString());
sw.close();
fr.close();
} catch (Exception e1) {
}
}
if(itemPressed.equals("복사하기(C)")) {
txtArea.copy();
}
if(itemPressed.equals("붙여넣기(P)")) {
txtArea.paste();
}
}
@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
new Notepad();
}
}
메모장-파일열기/저장/ 복사/붙여넣기 기능까지
폰트 적용/취소
자바 끝
db 시작