일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- spring boot
- 자바
- jsp
- 게시판
- thymeleaf
- css
- @requstbody
- github
- chart.js
- vsc
- Eclipse
- html
- IndexedDB
- 초보 개발자
- java
- resutful api
- git
- MYSQL
- 자바스크립트
- 실시간 상태값 저장
- 상태값 저장 유지
- ui인터페이스
- vscode
- chart.js 라이브러리
- JavaScript
- 여러 종류의 사용자 정의 함수
- 자바빈
- open in browser
- tomcat
- 데이터 시각화
Archives
- Today
- Total
수월한 IT
swing으로 만들어본 멀티 메모장 #1/2 본문
728x90
안녕하세요 IT여행자입니다.
이번 수첩은 자바 GUI API 중 하나인 swing을 사용하여 멀티 메모장을 만들어 볼까 합니다.
우리나라의 개발 환경은 대부분이 웹에 치중되어 있어 그리 흥미로운 인터페이스는 아니지만 자바언어만 알고 있어도 만들어 볼 수 있는 주제이기에 선정하였습니다.
개발 난이도는 아마추어 중급 수준입니다.
개발 난이도에 대한 설명이나 개발 환경은 영상을 참고해 주시기 바랍니다. 또한 영상은 두 개의 파트로 나뉘어 있습니다.
개발 환경

아래의 코드들은 직접 작성된 코드가 아니라 이클립스의 윈도빌더에 의해 기본적으로 작성된 코드들입니다. 따라서 이 부분까지는 직접 작성하지 마시고 영상을 보면서 과정대로 따라가시면 만들어 보시기 바랍니다. 이점 양지해 주시기 바랍니다.
Main.java ( 메인 실행 파일)
package memo; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import java.awt.BorderLayout; import javax.swing.JDesktopPane; public class Main extends JFrame { private JPanel contentPane; private JMenuBar menuBar; private JMenu mnNewMenu; private JMenuItem mntmNewMenuItem; private JMenuItem mntmNewMenuItem_1; private JMenuItem mntmNewMenuItem_2; private JMenuItem mntmNewMenuItem_3; private JMenuItem mntmNewMenuItem_4; private JDesktopPane desktopPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Main frame = new Main(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Main() { setTitle("메모장"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 457, 363); setJMenuBar(getMenuBar_1()); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(new BorderLayout(0, 0)); contentPane.add(getDesktopPane(), BorderLayout.CENTER); } protected JMenuBar getMenuBar_1() { if (menuBar == null) { menuBar = new JMenuBar(); menuBar.add(getMnNewMenu()); } return menuBar; } protected JMenu getMnNewMenu() { if (mnNewMenu == null) { mnNewMenu = new JMenu("관리"); mnNewMenu.add(getMntmNewMenuItem()); mnNewMenu.add(getMntmNewMenuItem_1()); mnNewMenu.add(getMntmNewMenuItem_2()); mnNewMenu.add(getMntmNewMenuItem_3()); mnNewMenu.add(getMntmNewMenuItem_4()); } return mnNewMenu; } protected JMenuItem getMntmNewMenuItem() { if (mntmNewMenuItem == null) { mntmNewMenuItem = new JMenuItem("목차보기"); } return mntmNewMenuItem; } protected JMenuItem getMntmNewMenuItem_1() { if (mntmNewMenuItem_1 == null) { mntmNewMenuItem_1 = new JMenuItem("새로만들기"); } return mntmNewMenuItem_1; } protected JMenuItem getMntmNewMenuItem_2() { if (mntmNewMenuItem_2 == null) { mntmNewMenuItem_2 = new JMenuItem("저장"); } return mntmNewMenuItem_2; } protected JMenuItem getMntmNewMenuItem_3() { if (mntmNewMenuItem_3 == null) { mntmNewMenuItem_3 = new JMenuItem("모두저장"); } return mntmNewMenuItem_3; } protected JMenuItem getMntmNewMenuItem_4() { if (mntmNewMenuItem_4 == null) { mntmNewMenuItem_4 = new JMenuItem("종료"); } return mntmNewMenuItem_4; } protected JDesktopPane getDesktopPane() { if (desktopPane == null) { desktopPane = new JDesktopPane(); } return desktopPane; } }
Content.java ( 메모 목차를 관리하는 클래스)
package memo; import java.awt.EventQueue; import javax.swing.JInternalFrame; import javax.swing.JScrollPane; import java.awt.BorderLayout; import javax.swing.JList; public class Content extends JInternalFrame { private JScrollPane scrollPane; private JList list; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Content frame = new Content(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Content() { setTitle("메모목차"); setBounds(100, 100, 376, 398); getContentPane().add(getScrollPane(), BorderLayout.CENTER); } protected JScrollPane getScrollPane() { if (scrollPane == null) { scrollPane = new JScrollPane(); scrollPane.setViewportView(getList()); } return scrollPane; } protected JList getList() { if (list == null) { list = new JList(); } return list; } }
Editor.java ( 편집기)
package memo; import java.awt.EventQueue; import javax.swing.JInternalFrame; import javax.swing.JScrollPane; import java.awt.BorderLayout; import javax.swing.JTextArea; public class Editor extends JInternalFrame { private JScrollPane scrollPane; private JTextArea textArea; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Editor frame = new Editor(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Editor() { setTitle("새메모"); setBounds(100, 100, 450, 300); getContentPane().add(getScrollPane(), BorderLayout.CENTER); } protected JScrollPane getScrollPane() { if (scrollPane == null) { scrollPane = new JScrollPane(); scrollPane.setViewportView(getTextArea()); } return scrollPane; } protected JTextArea getTextArea() { if (textArea == null) { textArea = new JTextArea(); } return textArea; } }
'BOOKS > 수월한 Java' 카테고리의 다른 글
추상 클래스 (0) | 2024.04.07 |
---|---|
인터페이스 (0) | 2024.04.07 |
swing으로 만들어본 멀티 메모장 #2/2 (0) | 2023.03.20 |
List에 담긴 정보를 배열로 변환하기 (0) | 2022.11.27 |
이클립스에서 Data Management로 MySQL 연결하기 (0) | 2021.10.30 |