제일 최상위는 루트라고 한다.
JTree = 루트
show root handle 루트를 접고 펴기 할 수있다.
rootvisible 누르면 분리됨.
트리는 윈도우빌더에서 버그가 있어서 마지막에 코드가 망가져있거나 문제가 생길때가 있어서 제일 마지막에 해주는것도 좋음.
모델 눌러서 이름 변경할 수 있음
마우스 클릭 이벤트 -> 코드입력
tree.getSelectionPath().toString()
tree.getSelectionPath() : 선택된 최초의 노드의 패스를 돌려준다.
tree = new JTree();
tree.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("click" + tree.getSelectionPath().toString());
}
});
JTree의 colors의 클릭한 목록 출력
트리 모델에 집어넣기
tree.setShowsRootHandles(true);
/* 주석처리
tree.setModel(new DefaultTreeModel(
new DefaultMutableTreeNode("JTree") {
{
DefaultMutableTreeNode node_1;
node_1 = new DefaultMutableTreeNode("colors");
node_1.add(new DefaultMutableTreeNode("파랑색"));
node_1.add(new DefaultMutableTreeNode("보라색"));
node_1.add(new DefaultMutableTreeNode("노란색"));
node_1.add(new DefaultMutableTreeNode("빨간색"));
add(node_1);
node_1 = new DefaultMutableTreeNode("sports");
node_1.add(new DefaultMutableTreeNode("basketball"));
node_1.add(new DefaultMutableTreeNode("soccer"));
node_1.add(new DefaultMutableTreeNode("football"));
node_1.add(new DefaultMutableTreeNode("hockey"));
add(node_1);
node_1 = new DefaultMutableTreeNode("food");
node_1.add(new DefaultMutableTreeNode("hot dogs"));
node_1.add(new DefaultMutableTreeNode("pizza"));
node_1.add(new DefaultMutableTreeNode("ravioli"));
node_1.add(new DefaultMutableTreeNode("bananas"));
add(node_1);
}
}
));
*/
// 메서드 부르기
// DefaultTreeModel : TreeNodes를 사용하는 단순 트리 데이터 모델
tree.setModel(new DefaultTreeModel(makeTree("root")));
scrollPane.setViewportView(tree);
}
// 위의 코드를 쉽게 쓰기
// DefaultMutableTreeNode : 트리의 데이터 표현을 위해 사용됨 / TreeNode 인터페이스를 구현한 클래스
// 트리의 각 노드를 표현하기위해 TreeNode 인터페이스를 사용
public DefaultMutableTreeNode makeTree(String rootName) {
DefaultMutableTreeNode root = new DefaultMutableTreeNode(rootName);
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("colors");
DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("sports");
DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("food");
// leaf11 ~
root.add(node1);
root.add(node2);
root.add(node3);
return root;
}
노드만 있고 안에 값은 없음
public DefaultMutableTreeNode makeTree(String rootName) {
DefaultMutableTreeNode root = new DefaultMutableTreeNode(rootName);
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("colors");
DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("sports");
DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("food");
// leafl에 선언 후 값 집어넣고 노드에 추가하기
DefaultMutableTreeNode leafl1 = new DefaultMutableTreeNode("파랑색");
DefaultMutableTreeNode leafl2 = new DefaultMutableTreeNode("보라색");
DefaultMutableTreeNode leafl3 = new DefaultMutableTreeNode("노란색");
DefaultMutableTreeNode leafl4 = new DefaultMutableTreeNode("빨간색");
// 노드에 붙이기 필수
node1.add(leafl1);
node1.add(leafl2);
node1.add(leafl3);
node1.add(leafl4);
// 더 간단하게, 노드에 바로 값 집어넣어버리기
node2.add(new DefaultMutableTreeNode("basketball"));
node2.add(new DefaultMutableTreeNode("soccer"));
node2.add(new DefaultMutableTreeNode("football"));
node2.add(new DefaultMutableTreeNode("hockey"));
root.add(node1);
root.add(node2);
root.add(node3);
return root;
}
종속적으로 만들어줘야한다.
JFrame 클래스를 생성하여 버튼 하나 만들고,
JDialog 클래스 만듦
JDialog 디자인은 아예 버튼이 제공되어져있다.
contentPanel과 buttonPane부분
가장 기본적인 동작은 JDialog의 밑의 코드부분이다.
JDialogEx01 dialog = new JDialogEx01();
// DISPOSE_ON_CLOSE : 창 닫기(한 개의 창만)
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
// 다이올로그 창 띄우기
dialog.setVisible(true);
JFrame클래스의 버튼에 이벤트 주고
JDialogEx01 dialog = JDialogEx01(); 로 객체를 생성해주고
dialog.setVisible(true); 로 다이올로그 창을 띄운다.
JButton btn = new JButton("New button");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// 다이올로그 객체 생성 해줘야한다.
JDialogEx01 dialog = new JDialogEx01();
// dialog 보여주기
dialog.setVisible(true);
}
});
버튼 누를때마다 열린다 / 그래서 따로 설정이 필요하다.
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE)는
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)와 비슷하지만
서로 종료시키는것의 차이가 있다.
DISPOSE_ON_CLOSE : 이 메서드는 현재 프레임을 닫는 데 사용된다.
그러나 응용 프로그램을 종료하지 않는다.
EXIT_ON_CLOSE : 이 메소드는 모든 프레임을 닫고 마지막으로 어플리케이션을 종료하기 위해 사용된다.
JButton btn = new JButton("New button");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JDialogEx01 dialog = new JDialogEx01();
// EXIT_ON_CLOSE 는 프로그램이 종료이고 DISPOSE_ON_CLOSE 는 내 창만 종료시키는 기능
// 창을 닫고 메모리에 저장시킴
// 버튼이아닌, 다이올로그에서도 적용시켜도 된다.
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
// dialog 보여주기
dialog.setVisible(true);
}
});
dialog.setVisible(true)보다 먼저 선언이 돼있어야 적용이 된다.
창이 하나 띄워지면 띄워진 창 하나 말고는 클릭이 안된다.
// dialog.setVisible(true)보다 먼저 선언이 돼있어야 적용이 된다.
dialog.setModal(true);
Rectangle 사용
Rectangle은 Rectangle 객체의 좌표 공간에서의 좌상의 점 (x, y) 및 그 폭과 높이에 의해 둘러싸이는 좌표 공간내의 영역을 지정
왼쪽 위에 자동적으로 띄워지는것을 중앙으로 띄워지게 하기
다이올로그의 setbound(위치)를 수정
수정 전
수정 후
Rectangle은 Rectangle 객체의 좌표 공간에서의 좌상의 점 (x, y) 및 그 폭과 높이에 의해 둘러싸이는 좌표 공간내의 영역을 지정
x, y좌표로 중앙으로 띄우게 함
JButton btn = new JButton("New button");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JDialogEx01 dialog = new JDialogEx01();
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
/*
// width, height 나옴
Dimension d = JDialogMainEx01.this.getSize();
System.out.println(d.toString());
// x, y 좌표값 나옴
Point p = JDialogMainEx01.this.getLocation();
System.out.println(p.toString());
*/
// JDialogMainEx01.this.getBounds()의 좌표와 크기의 정보를 줌
Rectangle r = JDialogMainEx01.this.getBounds();
System.out.println(r.toString());
// 창 바깥창 중앙에 띄우기
// x좌표
int fx = (int)r.getX();
// y좌표
int fy = (int)r.getY();
int fwidth = (int)r.getWidth();
int fheight = (int)r.getHeight();
int dwidth = 450;
int dheight = 300;
dialog.setBounds(fwidth/2 - dwidth/2 + fx, fheight/2 - dheight/2 + fy, dwidth, dheight);
// 창 하나만 띄우고 다른곳 클릭 안되게 함
dialog.setModal(true);
// dialog 보여주기
dialog.setVisible(true);
}
});
System.out.println(r.toString()); 으로 출력
다이올로그의 OK, Cancel버튼 이벤트 -> 액션 -> 액션퍼폼
// 닫기기능
JDialogEx01.this.dispose();
JPanel buttonPane = new JPanel();
buttonPane.setBounds(0, 228, 434, 33);
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
getContentPane().add(buttonPane);
{
JButton okButton = new JButton("OK");
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 익명 내부클래스이기때문에 ActionListner의 외부클래스명인 JDialogEx01.this로 명시해줘야한다.
// 익명 내부클래스이기때문에 this만 쓰면 안된다.
JDialogEx01.this.dispose();
}
});
okButton.setActionCommand("OK");
buttonPane.add(okButton);
getRootPane().setDefaultButton(okButton);
}
{
JButton cancelButton = new JButton("Cancel");
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JDialogEx01.this.dispose();
}
});
JFrame -> JDialog => 생성자, setter
JDialog -> JFrame => getter / 멤버필드
이런식으로 입/출력되게 하기 (데이터 주고 받기)
modal이 true면 버튼 눌렀을때 visible은 실행이 안되고 창을 닫을 때 실행이 된다.
JButton btn = new JButton("New button");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JDialogEx02 dialog = new JDialogEx02();
System.out.println("1");
// modal이 진행되면 비져블 하는 순간에 프레임의 제어권이 다이올로그로 넘어오면서 프레임이 멈춘다.
// modal이 true면 실행될때 visible에서 멈춘다.
// false면 비져블도 실행됨.
dialog.setModal(true);
System.out.println("2");
dialog.setVisible(true);
System.out.println("3");
// 1. JFrame -> JDialog로 가는 과정
// 2. JDialog -> JFrame으로 가는 과정
}
});
버튼 누르면 1,2 만 출력, 닫기 누르면 visible코드 실행돼서 3 출력이 된다.
프레임에서 다이올로그로 집어넣을 때
생성자, setter
다이올로그 클래스
JButton btn = new JButton("New button");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// 매개변수가 있는 생성자 호출함
// JDialogEx02 dialog = new JDialogEx02("데이터");
JDialogEx02 dialog = new JDialogEx02(textField1.getText());
System.out.println("1");
dialog.setModal(true);
System.out.println("2");
dialog.setVisible(true);
System.out.println("3");
// 1. JFrame -> JDialog로 가는 과정
// 2. JDialog -> JFrame으로 가는 과정
}
});
다이올로그에서 프레임으로 -> getter / 멤버필드
다이올로그 클래스
JPanel buttonPane = new JPanel();
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
getContentPane().add(buttonPane, BorderLayout.SOUTH);
{
JButton okButton = new JButton("OK");
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JDialogEx02.this.setData(textField.getText());
JDialogEx02.this.dispose();
}
});
JFrame 클래스
JButton btn = new JButton("New button");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// 매개변수가 있는 생성자 호출함
// JDialogEx02 dialog = new JDialogEx02("데이터");
JDialogEx02 dialog = new JDialogEx02(textField1.getText());
System.out.println("1");
dialog.setModal(true);
System.out.println("2");
dialog.setVisible(true);
System.out.println("3");
String data = dialog.getData();
System.out.println("결과 : " + data);
textField2.setText(data);
}
});
완성된 JFram 클래스와 JDialog 클래스 (위의 코드들의 종합본)
JDialogMain클래스(JFrame)
import java.awt.EventQueue;
import java.awt.TextField;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
public class JDialogMainEx02 extends JFrame {
private JPanel contentPane;
private JTextField textField1;
private JTextField textField2;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
JDialogMainEx02 frame = new JDialogMainEx02();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public JDialogMainEx02() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 800, 600);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
textField1 = new JTextField();
textField1.setBounds(12, 10, 194, 21);
contentPane.add(textField1);
textField1.setColumns(10);
JButton btn = new JButton("New button");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// 매개변수가 있는 생성자 호출함
// JDialogEx02 dialog = new JDialogEx02("데이터");
JDialogEx02 dialog = new JDialogEx02(textField1.getText());
System.out.println("1");
dialog.setModal(true);
System.out.println("2");
dialog.setVisible(true);
System.out.println("3");
String data = dialog.getData();
System.out.println("결과 : " + data);
textField2.setText(data);
}
});
btn.setBounds(218, 9, 97, 23);
contentPane.add(btn);
textField2 = new JTextField();
textField2.setBounds(12, 41, 303, 21);
contentPane.add(textField2);
textField2.setColumns(10);
}
}
JDialog 다이올로그 클래스(JDialog)
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
public class JDialogEx02 extends JDialog {
private final JPanel contentPanel = new JPanel();
// 공용데이터 생성
private String data;
private JTextField textField;
// setter
public void setData(String data) {
this.data = data;
}
// getter
public String getData() {
return data;
}
/**
* Create the dialog.
*/
// 생성자를 이용하여 캡슐화에 접근
public JDialogEx02(String data) {
this();
this.data = data;
// System.out.println(data);
this.textField.setText(data);
}
public JDialogEx02() {
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
setBounds(100, 100, 450, 300);
getContentPane().setLayout(new BorderLayout());
contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
getContentPane().add(contentPanel, BorderLayout.CENTER);
contentPanel.setLayout(null);
{
textField = new JTextField();
textField.setBounds(12, 10, 182, 21);
contentPanel.add(textField);
textField.setColumns(10);
}
{
JPanel buttonPane = new JPanel();
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
getContentPane().add(buttonPane, BorderLayout.SOUTH);
{
JButton okButton = new JButton("OK");
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JDialogEx02.this.setData(textField.getText());
JDialogEx02.this.dispose();
}
});
okButton.setActionCommand("OK");
buttonPane.add(okButton);
getRootPane().setDefaultButton(okButton);
}
{
JButton cancelButton = new JButton("Cancel");
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JDialogEx02.this.dispose();
}
});
cancelButton.setActionCommand("Cancel");
buttonPane.add(cancelButton);
}
}
}
}
버튼생성 -> 마우스 이벤트
JButton btn1 = new JButton("New button");
btn1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JColorChooser.showDialog(JColorChooserEx01.this, "팔레트", Color.RED);
}
});
x 닫기 누르면 null
JButton btn1 = new JButton("New button");
btn1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
Color color = JColorChooser.showDialog(JColorChooserEx01.this, "팔레트", Color.RED);
System.out.println("결과 : " + color);
}
});
선택한 색상에대한 rgb 정보 출력
JButton btn1 = new JButton("New button");
btn1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
Color color = JColorChooser.showDialog(JColorChooserEx01.this, "팔레트", Color.RED);
// System.out.println("결과 : " + color);
// 색 특성
if(color != null) {
System.out.println("RED : " + color.getRed());
System.out.println("Blue : " + color.getBlue());
System.out.println("Green : " + color.getGreen());
} else {
System.out.println("취소 선택");
}
}
});
파일의 위치를 가져옴
JFileChooser 객체 생성 -> 객체변수.showOpenDialog(JFileChooserEx01.this)로
파일 열기
내문서가 디폴트임
JButton btn = new JButton("New button");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.showOpenDialog(JFileChooserEx01.this);
}
});
이렇게 열릴 위치를 정해줄 수 있다.
JFileChooser fileChooser = new JFileChooser("C:\\");
JButton btn = new JButton("New button");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JFileChooser fileChooser = new JFileChooser("C:\\");
// showOpen과 showSave가 있는데 save는 말 그대로 저장하는 것. Open은 보여주는 것
/*
파일이 열리거나 저장이 되면 으로 0이 반환되는데,
0을 result에 담고 result와 APPROVE_OPTION(상수 0) 이 일치하면
잘 열리거나 저장이 됐다는것을 의미한다는 조건을 걸음
취소버튼을 누르면 CANCEL_OPTION이 반환된다.
*/
int result = fileChooser.showOpenDialog(JFileChooserEx01.this);
if(result == JFileChooser.APPROVE_OPTION) {
System.out.println("확인");
// 파일명이나 디렉토리명 가져오기
// 파일 객체를 사용하여 정보를 가져오기
File file = fileChooser.getSelectedFile();
System.out.println(file.getName());
System.out.println(file.getAbsolutePath());
} else if(result == JFileChooser.CANCEL_OPTION) {
System.out.println("취소");
}
}
});
취소 누르면 취소 출력
확인 누르면 확인 출력
파일 누르고 확인 누르면 파일 정보 출력
list - File객체
JButton btn = new JButton("파일 열기");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JFileChooser fileChooser = new JFileChooser("C:\\");
int result = fileChooser.showOpenDialog(JFileChooserEx01.this);
if(result == JFileChooser.APPROVE_OPTION) {
System.out.println("확인");
File file = fileChooser.getSelectedFile();
BufferedReader br = null;
textArea.setText("");
try {
br = new BufferedReader(new FileReader(file));
String line = null;
while((line = br.readLine()) != null) {
textArea.append(line + System.lineSeparator());
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally {
if(br != null) try {br.close();} catch(IOException e1) {}
}
} else if(result == JFileChooser.CANCEL_OPTION) {
System.out.println("취소");
}
}
});
선택한 파일의 내용을 볼 수 있다.
// FileNameExtensionFilter : file 확장자 필터링
// setFileFilter() : 파일필터 지정
FileNameExtensionFilter filter = new FileNameExtensionFilter("Java 소스", "Java", "txt");
fileChooser.setFileFilter(filter);
버튼생성 -> 마우스클릭 이벤트
btn2 = new JButton("파일 저장");
btn2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JFileChooser fileChooser = new JFileChooser("C:\\");
int result = fileChooser.showSaveDialog(JFileChooserEx01.this);
if(result == JFileChooser.APPROVE_OPTION) {
System.out.println("확인" + fileChooser.getSelectedFile().getName());
System.out.println("확인" + fileChooser.getSelectedFile().getAbsolutePath());
} else {
System.out.println("취소");
}
}
});
아직은 실제로 저장하지는 않았지만 저장이 잘 실행됐다고 뜸
btn2 = new JButton("파일 저장");
btn2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JFileChooser fileChooser = new JFileChooser("C:\\");
int result = fileChooser.showSaveDialog(JFileChooserEx01.this);
if(result == JFileChooser.APPROVE_OPTION) {
// getSelectedFile() : 선택한 파일의 경로 반환
// getAbsolutePath() : File에 입력된 절대 경로 리턴
System.out.println("확인" + fileChooser.getSelectedFile().getName());
System.out.println("확인" + fileChooser.getSelectedFile().getAbsolutePath());
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(fileChooser.getSelectedFile()));
bw.write(textArea.getText());
// JOptionPane.showInternalMessageDialog(JFileChooserEx01.this, "내용 저장",
// "저장", JOptionPane.INFORMATION_MESSAGE);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else {
System.out.println("취소");
}
}
});
Hello World가 적힌 텍스트파일을 html폴더에 저장하여 파일 생성된거 확인
파일 열기에서 html폴더의 Hello.txt파일을 선택 후 열기 누르면 Hello World 출력된다
JButton btn = new JButton("이미지 보기");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JFileChooser fileChooser = new JFileChooser("c:\\");
/*
FileNameExtensionFilter("파일 유형에 대한 값", "폴더에 있는 파일 유형 값");
만약 파일유형에 대한 값이 png고 폴더에 있는 파일 유형 값이 jpg라면
폴더유형을 png로 선택했을 때 나오는 폴더는 jpg폴더들이 나온다
그래서 두 개를 다 같은걸로 해줘야 한다.
*/
FileNameExtensionFilter filter1 = new FileNameExtensionFilter("JPG", "jpg");
FileNameExtensionFilter filter2 = new FileNameExtensionFilter("PNG", "png");
// setFileFilter(사용하는 새로운 현재의 파일 필터) : 현재의 파일 필터를 설정
fileChooser.setFileFilter(filter1);
fileChooser.setFileFilter(filter2);
int result = fileChooser.showOpenDialog(JFileChooserEx02.this);
if(result == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
lbl.setIcon(new ImageIcon(file.getAbsolutePath()));
} else if (result == JFileChooser.CANCEL_OPTION) {
System.out.println("취소");
}
}
});
mnNewMenu.addSeparator();
JMenuItem mntmNewMenuItem = new JMenuItem("New");
mntmNewMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("새파일");
}
});
mnNewMenu.add(mntmNewMenuItem);
JMenuItem mntmNewMenuItem_1 = new JMenuItem("Open");
mntmNewMenuItem_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("열기");
}
});