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 |