수월한 IT

swing으로 만들어본 멀티 메모장 #1/2 본문

BOOKS/수월한 Java

swing으로 만들어본 멀티 메모장 #1/2

IT여행자 2023. 3. 1. 15:28
728x90

안녕하세요 IT여행자입니다.

 

이번 수첩은 자바 GUI API 중 하나인 swing을 사용하여 멀티 메모장을 만들어 볼까 합니다.

우리나라의 개발 환경은 대부분이 웹에 치중되어 있어 그리 흥미로운 인터페이스는 아니지만 자바언어만 알고 있어도 만들어 볼 수 있는 주제이기에 선정하였습니다.

 

개발 난이도는 아마추어 중급 수준입니다.

 

개발 난이도에 대한 설명이나  개발 환경은 영상을 참고해 주시기 바랍니다. 또한 영상은 두 개의 파트로 나뉘어 있습니다.

 

개발 환경

 

 

 

https://youtu.be/jJK67Ex2W58

 

아래의 코드들은 직접 작성된 코드가 아니라 이클립스의 윈도빌더에 의해 기본적으로 작성된 코드들입니다. 따라서 이 부분까지는 직접 작성하지 마시고 영상을 보면서 과정대로 따라가시면 만들어 보시기 바랍니다. 이점 양지해 주시기 바랍니다.

 

 

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;
}
}