시소당
public class NotePadTest {
public static void main(String args[]){
new NotePadControler(new NotePadModel());
}
}
NotePadModel.java
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.datatransfer.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JTextField;
public class NotePadModel {
NotePadControler notePadControler;
String buffer=""; //클립보드 내용
String textBuffer=""; //찾기나 바꾸기할때 텍스트 필드 항목
String replaceTextBuffer=""; //바꾸기할때 텍스트 필드 항목
//블록된것이 있는가 판별
public boolean setStatusBar(String blockedString){
try{
if(blockedString.length()>0||blockedString!=null){return true;}
else{return false;}
}catch(NullPointerException ne){
return false;
}
}
//버퍼(클립보드)내용을 받아옴
public boolean checkBuffered(){
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable clipData = clipboard.getContents(clipboard);
if(clipData!=null){
try{
buffer = (String)(clipData.getTransferData(DataFlavor.stringFlavor));
}catch(Exception ce){
ce.printStackTrace();
}
}
if(!buffer.equals("")){ return true;}
else{return false;}
}//현재 커서의 위치를 1차원배열(y축,x축)에 넣어 리턴
public int[] setCursor(String areaText){
int y=1; int x=1; int z=0; //y:줄 x:칸 z최종적으로 잘라내어지는 길이
for(int i=0;i<areaText.length();i++){
if(areaText.charAt(i)=='\n'){y=y+1;z=i+1;}
}
x=x+areaText.length()-z;
return new int[]{y,x};
}
public void fileMenuHander(String fileMenu){
if(fileMenu.equals("새로만들기")){}
else if(fileMenu.equals("열기")){notePadControler.openFile();}
else if(fileMenu.equals("저장")){notePadControler.saveFile();}
else if(fileMenu.equals("다른이름으로 저장")){}
else if(fileMenu.equals("끝내기")){notePadControler.exit();}
}
public void editMenuHander(String editMenu){
if(editMenu.equals("실행취소")){}
else if(editMenu.equals("잘라내기")){notePadControler.cut();}
else if(editMenu.equals("복사")){notePadControler.copy();}
else if(editMenu.equals("붙여넣기")){
if(checkBuffered())
notePadControler.replaceRange(buffer);
}
else if(editMenu.equals("삭제")){notePadControler.replaceRange("");}
else if(editMenu.equals("찾기")){notePadControler.find();}
else if(editMenu.equals("다음찾기")){notePadControler.nextFind();}
else if(editMenu.equals("바꾸기")){notePadControler.replace();}
else if(editMenu.equals("모두선택")){notePadControler.selectAll();}
}
public void formMenuHander(String formMenu){
if(formMenu.equals("자동 줄 바꿈")){}
else if(formMenu.equals("글꼴")){notePadControler.fontStyle();}
}
public void viewMenuHander(String viewMenu){}
public void helpMenuHander(String helpMenu){}
public String getBuffer(){return buffer;}
public void setTextBuffer(String textBuffer){this.textBuffer=textBuffer;}
public String getTextBuffer(){return textBuffer;}
public void setReplaceTextBuffer(String replaceTextBuffer){
this.replaceTextBuffer=replaceTextBuffer;
}
public String getReplaceTextBuffer(){
return replaceTextBuffer;
}
}
NotePadControler.java
public class NotePadControler {
NotePadView notePadView;
NotePadModel notePadModel;
///생성자 부분
public NotePadControler(NotePadModel notePadModel) {
this.notePadModel = notePadModel;
notePadModel.notePadControler=this;
//뷰어를 생성
notePadView = new NotePadView(this);
notePadView.setBounds(600, 400, 400, 400);
notePadView.setVisible(true);
}
//블록 여부를 체크해 뷰에 반영
public void blockSelected(String blockedString){
if(notePadModel.setStatusBar(blockedString))
notePadView.setHasBlocked();
else
notePadView.setHasNotBloked();
}
//버퍼(클립보드) 내용 유무를 판별해 뷰에 반영
public void checkBufferd(){
if(notePadModel.checkBuffered())
notePadView.setHasBufferd();
else
notePadView.setHasNotBufferd();
}
//현재 좌표 위치를 뷰의 상태표시줄에 알림
public void checkCursor(String areaText){
notePadView.setTextStatusBar(notePadModel.setCursor(areaText));
}
//리스너 탑재
public void fileMenuHander(String fileMenu){notePadModel.fileMenuHander(fileMenu);}
public void editMenuHander(String editMenu){notePadModel.editMenuHander(editMenu);}
public void formMenuHander(String formMenu){notePadModel.formMenuHander(formMenu);}
public void viewMenuHander(String viewMenu){notePadModel.viewMenuHander(viewMenu);}
public void helpMenuHander(String helpMenu){notePadModel.helpMenuHander(helpMenu);}
public void newFile(){notePadView.newFile();}
public void openFile(){notePadView.openFile();}
public void saveFile(){notePadView.saveFile();}
public void savAsFile(){notePadView.saveAsFile();}
public void exit(){notePadView.exit();}
public void cut(){ notePadView.cut();}
public void copy(){ notePadView.copy();}
public void replaceRange(String replaceString){
notePadModel.checkBuffered();
notePadView.replaceRange(replaceString);
}
public void find(){notePadView.find();}
public void nextFind(){notePadView.nextFind();}
public void replace(){notePadView.replace();}
public void selectAll(){notePadView.selectAll();}
public void fontStyle(){notePadView.fontStyle();}
//Buffer란 클립보드 내용 textBuffer란 바꾸기내용할 내용
public String getBuffer(){return notePadModel.getBuffer();}
public void setTextBuffer(String textBuffer){notePadModel.setTextBuffer(textBuffer);}
public String getTextBuffer(){return notePadModel.getTextBuffer();}
public void setReplaceTextBuffer(String replaceTextBuffer){
notePadModel.setReplaceTextBuffer(replaceTextBuffer);
}
public String getReplaceTextBuffer(){
return notePadModel.getReplaceTextBuffer();
}
}
NotePadView.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.io.*;
public class NotePadView extends JFrame implements ItemListener{
NotePadControler notePadControler;
//변수 선언부
JMenuBar menuBar;
JMenu fileMenu, editMenu, formMenu, viewMenu, helpMenu, menus[];
JMenuItem newFile, openFile, saveFile, saveAsFile, exitFile, fileMenuItems[];
JMenuItem undo, cut, copy, paste, delete, find, nextFind, replace, selectAll, editMenuItems[];
JCheckBoxMenuItem lineFit;
JMenuItem font, formMenuItems[];
JCheckBoxMenuItem statusBar;
JMenuItem viewMenuItems[];
JMenuItem helper, about, helpMenuItems[];
JTextArea taMain;
JPanel pStatusBar;
JLabel lStatusBar;
JScrollPane scrollPane;
FileMenuView fileMenuDialog;
FindDialog findDialog;
ReplaceDialog replaceDialog;
FontStyleView fontStyleView;
//생성자
NotePadView(NotePadControler notePadControler){
this.notePadControler=notePadControler;
//배치관리자
Container con = getContentPane();
con.setLayout(new BorderLayout());
setTitle("이상한 메모장");
//메뉴바 세팅
menuBar = new JMenuBar();
fileMenu = new JMenu("파일");
editMenu = new JMenu("편집");
formMenu = new JMenu("서식");
viewMenu = new JMenu("보기");
helpMenu = new JMenu("도움말");
menus = new JMenu[]{fileMenu, editMenu, formMenu, viewMenu, helpMenu};
//파일메뉴 세팅
newFile = new JMenuItem("새로만들기");
openFile = new JMenuItem("열기");
saveFile = new JMenuItem("저장");
saveAsFile = new JMenuItem("다른 이름으로 저장");
exitFile = new JMenuItem("끝내기");
fileMenuItems = new JMenuItem[]{newFile, openFile, saveFile, saveAsFile, exitFile};
fileMenu.add(newFile); fileMenu.add(openFile); fileMenu.add(saveFile);
fileMenu.add(saveAsFile); fileMenu.addSeparator(); fileMenu.add(exitFile);
//편집메뉴 세팅
undo = new JMenuItem("실행취소");
cut = new JMenuItem("잘라내기");
copy = new JMenuItem("복사");
paste = new JMenuItem("붙여넣기");
delete = new JMenuItem("삭제");
find = new JMenuItem("찾기");
nextFind = new JMenuItem("다음찾기");
replace = new JMenuItem("바꾸기");
selectAll = new JMenuItem("모두선택");
editMenuItems = new JMenuItem[]{undo, cut, copy, paste, delete, find, nextFind, replace, selectAll};
editMenu.add(undo); editMenu.addSeparator();
editMenu.add(cut); editMenu.add(copy); editMenu.add(paste); editMenu.add(delete);
cut.setEnabled(false); copy.setEnabled(false);
paste.setEnabled(false); delete.setEnabled(false);
editMenu.addSeparator();
editMenu.add(find); editMenu.add(nextFind); editMenu.add(replace);
editMenu.addSeparator(); editMenu.add(selectAll);
//서식메뉴 세팅
lineFit = new JCheckBoxMenuItem("자동 줄 바꿈");
font = new JMenuItem("글꼴");
formMenuItems = new JMenuItem[]{lineFit, font};
formMenu.add(lineFit); formMenu.add(font);
//보기메뉴 세팅
statusBar = new JCheckBoxMenuItem("상태표시줄");
viewMenuItems = new JMenuItem[]{statusBar};
viewMenu.add(statusBar);
//도움말메뉴 세팅
helper = new JMenuItem("도움말");
about = new JMenuItem("정보");
helpMenuItems = new JMenuItem[]{helper, about};
helpMenu.add(helper);
helpMenu.addSeparator();
helpMenu.add(about);
//메뉴바 세팅
menuBar.add(fileMenu); menuBar.add(editMenu); menuBar.add(formMenu);
menuBar.add(viewMenu); menuBar.add(helpMenu);
//상태바 세팅
pStatusBar = new JPanel();
pStatusBar.setLayout(new BorderLayout());
lStatusBar = new JLabel();
lStatusBar.setHorizontalAlignment(JLabel.RIGHT);
pStatusBar.add(lStatusBar);
con.add(pStatusBar,"South");
pStatusBar.setVisible(false);
//메뉴의 구성요소에 리스너를 부착하는 메소드를 호출
setJMenuBar(menuBar);
// TextArea 세팅
taMain = new JTextArea("<<안되는 기능>>\n<파일메뉴>\n\t새로만들기\n\t다른이름으로 저장\n<편집메뉴>\n\t실행취소\n<서식메뉴>\n\t자동줄바꿈\n<도움말메뉴>\n\t정보\ n");
scrollPane = new JScrollPane(taMain);
con.add(scrollPane,"Center");
setMenuBarItems();
//키입력을 받으면 이벤트 리스너를 호출
taMain.addKeyListener(new KeyAdapter(){
public void keyReleased(KeyEvent arg0) {
somethingEventRaise();
}
});
//마우스 입력을 받으면 이벤트 리스너를 호출
taMain.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent arg0) {
somethingEventRaise();
}
});
//Text Area에서 Foucus가 잃을때 이벤트 리스너를 호출
taMain.addFocusListener(new FocusAdapter(){
public void focusLost(FocusEvent arg0) {
somethingEventRaise();
}
});
//끄기
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent evt){
dispose();
System.exit(0);
}
});
}
//메뉴에 리스너를 생성
public void setMenuBarItems(){
for(JMenuItem fileMenuItem : fileMenuItems){
fileMenuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent fileMenuActionEvent) {
notePadControler.fileMenuHander(fileMenuActionEvent.getActionCommand());
}
});
}
for(JMenuItem editMenuItem : editMenuItems){
editMenuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent editMenuActionEvent) {
notePadControler.editMenuHander(editMenuActionEvent.getActionCommand());
somethingEventRaise();
}
});
}
for(JMenuItem formMenuItem : formMenuItems){
formMenuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent formMenuActionEvent) {
notePadControler.formMenuHander(formMenuActionEvent.getActionCommand());
}
});
}
for(JMenuItem viewMenuItem : viewMenuItems){
viewMenuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent viewMenuActionEvent) {
}
});
}
for(JMenuItem helpMenuItem : helpMenuItems){
helpMenuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent helpMenuActionEvent) {
}
});
}
//자동줄바꿈과 상태표시줄의 리스너
lineFit.addItemListener(this);
statusBar.addItemListener(this);
}
//입력이 들어올때마다 버퍼체크, 현재텍스트창 블록설정여부, 현재 커서 위치를 체크함
public void somethingEventRaise(){
notePadControler.checkBufferd();
notePadControler.blockSelected(taMain.getSelectedText());
notePadControler.checkCursor(taMain.getText().substring(0,taMain.getCaretPosition()));
}
//현재 좌표 출력
public void setTextStatusBar(int[] coodinate){
lStatusBar.setText("줄 : "+coodinate[0]+" 칸 : "+coodinate[1]+" ");
}
//현재 필드내에 셀렉트 된 부분 유무에 따라 편집메뉴중 일부분을 활성화/비활성화
public void setHasBlocked(){
cut.setEnabled(true); copy.setEnabled(true); delete.setEnabled(true);
}
public void setHasNotBloked(){
cut.setEnabled(false); copy.setEnabled(false); delete.setEnabled(false);
}
//현재 클립보드에 내용 유무에 따라 편집메뉴중 일부분을 활성화/비활성화
public void setHasBufferd(){paste.setEnabled(true);}
public void setHasNotBufferd(){paste.setEnabled(false); }
//상태표시줄의 활성화/비활성화 부분
public void enableStatusBar(){
pStatusBar.setVisible(true);
somethingEventRaise();
Dimension nowSize = this.getSize();
pack();
setSize(nowSize);
}
public void disableStatusBar(){
pStatusBar.setVisible(false);
Dimension nowSize = this.getSize();
pack();
setSize(nowSize);
}
//상태표시줄 항목의 체크 여부 판별
public void itemStateChanged(ItemEvent e) {
System.out.println("되남?");
if(((JCheckBoxMenuItem)e.getSource()).equals(statusBar)){
if(((JCheckBoxMenuItem)e.getSource()).getState()){
enableStatusBar();
}else{
disableStatusBar();
}
}
}
//파일메뉴
public void newFile(){
};
public void openFile(){
fileMenuDialog=new FileMenuView("open");
fileMenuDialog.setBounds(650, 450, 300, 250);
fileMenu.setVisible(true);
}
public void saveFile(){
fileMenuDialog=new FileMenuView("save");
fileMenuDialog.setBounds(650, 450, 300, 250);
fileMenu.setVisible(true);}
public void saveAsFile(){
}
public void exit(){
dispose();
System.exit(0);
}
//편집메뉴
public void cut(){taMain.cut();}
public void copy(){taMain.copy();}
public void find(){
findDialog = new FindDialog(NotePadView.this);
}
public void nextFind(){
if(notePadControler.getTextBuffer().equals("")){
find();
}else{
findOperation();
}
}
public void replace(){
replaceDialog = new ReplaceDialog(NotePadView.this);
}
public void selectAll(){
taMain.selectAll();
}
//찾기 작업
public void findOperation(){
String content="";
String findStr="";
int startIdx=0, endIdx=0, fromIdx=0;
NotePadView.this.taMain.requestFocus();
findStr=notePadControler.getTextBuffer();
content=NotePadView.this.taMain.getText();
fromIdx=taMain.getCaretPosition();
startIdx=content.indexOf(findStr, fromIdx);
endIdx=startIdx+findStr.length();
if(startIdx==-1){
NotePadView.this.taMain.select(0,-1);
fromIdx=0;
startIdx=0;
endIdx=0;
///tFindText.setText("문서끝입니다~");
}else{
NotePadView.this.taMain.select(startIdx,endIdx);
}
System.out.println(startIdx+","+endIdx);
}
//바꾸기 작업
public void replaceOperation(){
if(taMain.getSelectionEnd()-taMain.getSelectionStart()!=0)
replaceRange(notePadControler.getReplaceTextBuffer());
taMain.select(taMain.getCaretPosition()-notePadControler.getReplaceTextBuffer().length(),taMain.getCaretPosition() );
}
//모두 바꾸기작업
public void replaceAllOperation(){
do{
taMain.setCaretPosition(0);
findOperation();
replaceOperation();
}while(taMain.getSelectionEnd()-taMain.getSelectionStart()!=0);
}
//모두 바꾸기작업에 쓰이는 메소드
public void replaceRange(String replaceString){
taMain.replaceRange(replaceString,taMain.getSelectionStart(),taMain.getSelectionEnd());
}
// 서식메뉴 -폰트 바꾸기
public void fontStyle(){
fontStyleView = new FontStyleView();
fontStyleView.setBounds(400, 500, 400, 350);
fontStyleView.setVisible(true);
}
//찾기메뉴 내부클래스
class FindDialog extends JDialog implements ActionListener{
JTextField tFindText;
JButton bFind, bClose;
FindDialog(NotePadView notePadView){
super(notePadView,"찾기",false);
setLayout(new FlowLayout());
add(tFindText = new JTextField(15));
add(bFind = new JButton("찾기"));
add(bClose = new JButton("닫기"));
bFind.addActionListener(this);
bClose.addActionListener(this);
tFindText.setText(notePadControler.getTextBuffer());
setBounds(650, 450, 250, 100);
setResizable(false);
setVisible(true);
//찾기 작업중 찾는문자열 필드 문자가 사라지는 현상을 방지하기 위해 리스너를 붙임
tFindText.addKeyListener(new KeyAdapter(){
public void keyReleased(KeyEvent arg0) {
notePadControler.setTextBuffer(tFindText.getText());
}
});
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("찾기")){
tFindText.setText(notePadControler.getTextBuffer());
findOperation();
}else{
this.dispose();
}
}
}
//바꾸기 메뉴 내부클래스
class ReplaceDialog extends JDialog implements ActionListener{
JTextField tFindText, tReplaceText;
JButton bFind, bReplace, bReplaceAll, bClose;
ReplaceDialog(NotePadView notePadView){
super(notePadView,"바꾸기",false);
setLayout(new FlowLayout());
add(tFindText = new JTextField(15));
add(bFind = new JButton("찾기"));
add(tReplaceText = new JTextField(15));
add(bReplace = new JButton("바꾸기"));
add(bReplaceAll = new JButton("모두바꾸기"));
add(bClose = new JButton("닫기"));
bFind.addActionListener(this);
bReplace.addActionListener(this);
bReplaceAll.addActionListener(this);
bClose.addActionListener(this);
tFindText.setText(notePadControler.getTextBuffer());
notePadControler.setReplaceTextBuffer("");
setBounds(650, 450, 300, 130);
setResizable(false);
setVisible(true);
//바꾸기 작업중 필드간에 커서 이동시 글자가 사라지는 현상을 방지하기 위해 4개의 리스너를 부착
tFindText.addKeyListener(new KeyAdapter(){
public void keyReleased(KeyEvent arg0) {
notePadControler.setTextBuffer(tFindText.getText());
}
});
tReplaceText.addKeyListener(new KeyAdapter(){
public void keyReleased(KeyEvent arg0) {
notePadControler.setReplaceTextBuffer(tReplaceText.getText());
}
});
tFindText.addFocusListener(new FocusAdapter(){
public void focusLost(FocusEvent arg0) {
tFindText.setText(notePadControler.getTextBuffer());
}
});
tReplaceText.addFocusListener(new FocusAdapter(){
public void focusLost(FocusEvent arg0) {
tReplaceText.setText(notePadControler.getReplaceTextBuffer());
}
});
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("찾기")){
tFindText.setText(notePadControler.getTextBuffer());
findOperation();
}else if(e.getActionCommand().equals("바꾸기")){
tFindText.setText(notePadControler.getTextBuffer());
tReplaceText.setText(notePadControler.getReplaceTextBuffer());
replaceOperation();
}else if(e.getActionCommand().equals("모두바꾸기")){
tFindText.setText(notePadControler.getTextBuffer());
tReplaceText.setText(notePadControler.getReplaceTextBuffer());
replaceAllOperation();
}else{
this.dispose();
}
}
}
class FileMenuView extends JFrame{
String type;
JFileChooser fileChooser;
JLabel l;
String str="";
int c;
int menuType;
FileMenuView(String type){
this.type=type;
fileChooser = new JFileChooser(".");
if(type.equals("open")){
menuType=fileChooser.showOpenDialog(this);
this.setTitle("열기");
}
else{
menuType=fileChooser.showSaveDialog(this);
this.setTitle("저장");
}
try{
File file=fileChooser.getSelectedFile();
String path=file.getPath();
if(menuType==JFileChooser.APPROVE_OPTION){
if(type.equals("open")){
if(file !=null){
BufferedReader in =
new BufferedReader(new FileReader(path));
while((c=in.read())>=0){
str+=(char)c;
}
taMain.setText(str);
in.close();
}
}else if(type.equals("save")){
if(file != null){
BufferedWriter out = new BufferedWriter(new FileWriter(path));
out.write(taMain.getText());
out.close();
}
}
}
}catch(Exception e){
//System.out.println("열기나 저장중 캔슬 햇죠?");
}
}
}
class FontStyleView extends JFrame implements ActionListener, ListSelectionListener{
String[] fontName=GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
String[] fontStyleName={"PLAIN","BOLD","ITALIC"};
String[] fontSize={"6","7","8","9","10","12","14","17","20","24","30","40"};
JList listFontName, listFontStyle, listFontSize;
JPanel listPanel, centerPanel, southPanel;
JScrollPane listScrollPane;
JLabel textLabel;
JButton bConfirm, bCancel;
Font newFont = null;
public FontStyleView() {
//배치관리자
Container con = getContentPane();
centerPanel=new JPanel(new GridLayout(2,1));
listPanel = new JPanel();
listPanel.setLayout(new GridLayout(0,3));
//폰트 네임 부분
listFontName = new JList(fontName);
listFontName.addListSelectionListener(this);
listScrollPane = new JScrollPane(listFontName);
listScrollPane.setBorder(new TitledBorder("Font Name"));
listPanel.add(listScrollPane);
//리스트는 하나만 선택가능하고, 필드의 값을 가져와 해당 폰트 이름에 기본적으로 셀렉트 되어잇음
listFontName.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
listFontName.setSelectedValue(taMain.getFont().getName(),false);
//폰트 스타일 부분
listFontStyle = new JList(fontStyleName);
listFontStyle.addListSelectionListener(this);
listScrollPane = new JScrollPane(listFontStyle);
listScrollPane.setBorder(new TitledBorder("Font Style Name"));
listPanel.add(listScrollPane);
// 리스트는 하나만 선택가능하고, 필드의 값을 가져와 해당 폰트 스타일이름에 기본적으로 셀렉트 되어잇음
listFontStyle.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
listFontStyle.setSelectedIndex(taMain.getFont().getStyle());
//폰트 사이즈 부분//
listFontSize = new JList(fontSize);
listFontSize.addListSelectionListener(this);
listScrollPane = new JScrollPane(listFontSize);
listScrollPane.setBorder(new TitledBorder("Font Size"));
listPanel.add(listScrollPane);
// 리스트는 하나만 선택가능하고, 필드의 값을 가져와 해당 폰트 사이즈에 기본적으로 셀렉트 되어잇음
listFontSize.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
listFontSize.setSelectedValue(""+taMain.getFont().getSize(),false);
//폰트 예문 부분
textLabel = new JLabel("Hello~ Andromeda");
textLabel.setHorizontalAlignment(JLabel.CENTER);
//예문 폰트는 현재 메모장필드에 세팅된 폰트값을 가져와서 세팅됨
textLabel.setFont(new Font(
(String)(listFontName.getSelectedValue()),
listFontStyle.getSelectedIndex(),
Integer.parseInt((String)(listFontSize.getSelectedValue()))
));;
centerPanel.add(listPanel);
centerPanel.add(textLabel);
bConfirm = new JButton("확인");
bCancel = new JButton("취소");
bConfirm.addActionListener(this);
bCancel.addActionListener(this);
southPanel = new JPanel();
southPanel.add(bConfirm);
southPanel.add(bCancel);
con.add(centerPanel,"Center");
con.add(southPanel,"South");
newFont = textLabel.getFont();
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("확인"))
taMain.setFont(newFont);
this.dispose();
}
//리스트를 고를때마다 예문 폰트가 바뀜
public void valueChanged(ListSelectionEvent arg0) {
try{
textLabel.setFont(new Font(
(String)(listFontName.getSelectedValue()),
listFontStyle.getSelectedIndex(),
Integer.parseInt((String)(listFontSize.getSelectedValue()))
));
newFont = textLabel.getFont();
}catch(NullPointerException e){
//System.out.println("폰트 처음 눌럿을때 나는 에러 무시해도됨 ");
}
}
}
}
출처 : http://elog.comrg.net/java/969
[2008년 05월 06일 13:28:47 수정되었습니다.]