티스토리 뷰
package chapter18; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileInputStream; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; 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.border.BevelBorder; import javax.swing.SwingConstants; public class TextEditor extends JFrame { MyFileWriter mfw; MyFileReader mfr; File file; private JPanel contentPane; private JMenuBar menuBar; private JMenu mnNewMenu; private JMenuItem menuOpen; private JMenuItem menuSave; private JMenuItem menuSaveAs; private JScrollPane scrollPane; private JTextArea textArea; private JLabel status; private JMenuItem newFile; /* * 내가 직접 만든 건 이쯤에다가 쓰자 */ public void save() { mfw = new MyFileWriter(file, textArea.getText()); boolean b = mfw.write(); if (b) { status.setForeground(Color.blue); status.setText("파일이 정상적으로 저장되었습니다."); } else { status.setForeground(Color.red); status.setText("파일 저장 중 오류 발생."); } } public void read() { mfr = new MyFileReader(file); String str = mfr.read(); if (str == null){ //공백문자 txt파일이 있을 수도 있으니까 status.setForeground(Color.red); status.setText("해당 파일이 없거나 읽을 수 없는 파일입니다. "); } else { status.setText(""); //앞의 파일이 오류났을 때 상태바에 뜬 오류 메세지를 지우는 것 textArea.setText(str); } } /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { TextEditor frame = new TextEditor(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public TextEditor() { setFont(new Font("Verdana", Font.BOLD, 12)); setTitle("T e x t E d i t o r"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 468, 406); setJMenuBar(getMenuBar_1()); contentPane = new JPanel(); contentPane.setBackground(new Color(0, 0, 0)); contentPane.setBorder(null); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); contentPane.add(getScrollPane(), BorderLayout.CENTER); contentPane.add(getStatus(), BorderLayout.SOUTH); } private JMenuBar getMenuBar_1() { if (menuBar == null) { menuBar = new JMenuBar(); menuBar.setOpaque(false); menuBar.setBackground(new Color(0, 0, 0)); menuBar.setBorder(null); menuBar.add(getMnNewMenu()); } return menuBar; } private JMenu getMnNewMenu() { if (mnNewMenu == null) { mnNewMenu = new JMenu("File"); mnNewMenu.setForeground(new Color(75, 0, 130)); mnNewMenu.setFont(new Font("맑은 고딕", Font.BOLD, 13)); mnNewMenu.add(getNewFile()); mnNewMenu.add(getMenuOpen()); mnNewMenu.add(getMenuSave()); mnNewMenu.add(getMenuSaveAs()); } return mnNewMenu; } private JMenuItem getMenuOpen() { if (menuOpen == null) { menuOpen = new JMenuItem("open..."); menuOpen.setBorder(null); menuOpen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //작성 JFileChooser jc = new JFileChooser(file); int yn = jc.showOpenDialog(TextEditor.this); //텍스트 에디터 자기 자신이 parents다,, if (yn == JFileChooser.APPROVE_OPTION) { //열기버튼 선택시 file = jc.getSelectedFile(); //선택된 파일의 객체를 파일객체로 넘겨와랏! //ㄴ->필드로 보냈음 //textArea.append(file.getPath()); //파일 열기시 경로 표시해주기 setTitle("T e x t E d i t o r : "+file.getPath()); read(); } } }); menuOpen.setForeground(new Color(153, 50, 204)); menuOpen.setFont(new Font("맑은 고딕", Font.BOLD, 13)); } return menuOpen; } private JMenuItem getMenuSave() { if (menuSave == null) { menuSave = new JMenuItem("save"); menuSave.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //작성 if ( file == null ) {//파일명을 미지정한 경우 JFileChooser jc = new JFileChooser(file); int yn = jc.showOpenDialog(TextEditor.this); //this만 뜨면 Action e 지정이라 안됨 if (yn == JFileChooser.APPROVE_OPTION) { file = jc.getSelectedFile(); } } save(); } }); menuSave.setBorder(null); menuSave.setForeground(new Color(153, 50, 204)); menuSave.setFont(new Font("맑은 고딕", Font.BOLD, 13)); } return menuSave; } private JMenuItem getMenuSaveAs() { if (menuSaveAs == null) { menuSaveAs = new JMenuItem("save as..."); menuSaveAs.setBorder(null); menuSaveAs.setForeground(new Color(153, 50, 204)); menuSaveAs.setFont(new Font("맑은 고딕", Font.BOLD, 13)); } return menuSaveAs; } private JScrollPane getScrollPane() { if (scrollPane == null) { scrollPane = new JScrollPane(); scrollPane.setViewportView(getTextArea()); } return scrollPane; } private JTextArea getTextArea() { if (textArea == null) { textArea = new JTextArea(); textArea.setBorder(new BevelBorder(BevelBorder.LOWERED, new Color(255, 250, 205), new Color(255, 105, 180), new Color(255, 255, 0), new Color(147, 112, 219))); textArea.setBackground(new Color(0, 0, 0)); textArea.setForeground(new Color(255, 240, 245)); textArea.setSelectionColor(new Color(0, 204, 204)); textArea.setFont(new Font("맑은 고딕", Font.PLAIN, 13)); } return textArea; } private JLabel getStatus() { if (status == null) { status = new JLabel(""); status.setIconTextGap(0); status.setHorizontalAlignment(SwingConstants.LEFT); status.setHorizontalTextPosition(SwingConstants.CENTER); status.setForeground(new Color(204, 204, 255)); status.setFont(new Font("맑은 고딕", Font.BOLD, 12)); status.setPreferredSize(new Dimension(57, 20)); status.setMaximumSize(new Dimension(80, 15)); } return status; } private JMenuItem getNewFile() { if (newFile == null) { newFile = new JMenuItem("new file"); newFile.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // file = null; textArea.setText(""); //일단 clear해줌 } }); newFile.setForeground(new Color(153, 50, 204)); newFile.setFont(new Font("맑은 고딕", Font.BOLD, 13)); newFile.setBorder(null); } return newFile; } }
'배움의 독백' 카테고리의 다른 글
요즘 자주 보이는 css 중 border-radius 스타일 (0) | 2017.12.06 |
---|---|
Debugging에 대해 (0) | 2017.09.04 |
추상클래스와 인터페이스의 차이점? (0) | 2017.09.01 |
무료 호스팅 신청했음 (0) | 2017.08.31 |
개발자에 가까워지기 위한 유용한 사이트 모음(8/30/17 update) (0) | 2017.08.30 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Generic Type
- Interface
- 타입변환과 다형성
- 로컬 클래스
- tables in htmll
- NVL2()
- FileChannel
- casring
- Maven Project
- 상속
- !(not)
- 테이블 데이터 복사
- 멤버 클래스
- DECODE()
- implements
- IN(var1 var2 var3)
- IS RECORD
- 중첩 클래스
- 계층형 쿼리
- SELECT절 명령어
- SQL Operator
- z-dindex
- 복수행 함수
- 데이터 딕셔너리
- NVL()
- GROUP BY절
- DI(의존성 주입)
- hierarchical query
- MONTH_BETWEEN
- CLASS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함