메뉴만들기
import javax.swing.*;
public class MenuEx extends JFrame { public MenuEx() { setTitle("Menu 만들기 예제"); createMenu(); // 메뉴 생성, 프레임에 삽입 setSize(250,200); setVisible(true); }
// 메뉴를 만들어 프레임에 삽입한다. private void createMenu() { JMenuBar mb = new JMenuBar(); // 메뉴바 생성 JMenu screenMenu = new JMenu("보기");
// 보기 메뉴에 메뉴아이템 생성 삽입 screenMenu.add(new JMenuItem("불러오기")); screenMenu.add(new JMenuItem("숨기기")); screenMenu.add(new JMenuItem("다시보기")); screenMenu.addSeparator(); // 분리선 삽입 screenMenu.add(new JMenuItem("닫기"));
// 메뉴바에 메뉴 삽입 mb.add(screenMenu); // 보기 메뉴 삽입 mb.add(new JMenu("편집")); mb.add(new JMenu("프로젝트")); mb.add(new JMenu("도움말"));
// 메뉴바를 프레임에 부착 setJMenuBar(mb); }
public static void main(String [] args) { new MenuEx(); } } |
실행결과]
메뉴에 액션설정
import javax.swing.*; import java.awt.event.*; import java.awt.*;
public class MenuActionEventEx extends JFrame { private JLabel imgLabel = new JLabel(); // 빈 이미지를 가진 레이블 public MenuActionEventEx() { setTitle("Menu에 Action 리스너 만들기 예제"); createMenu(); getContentPane().add(imgLabel, BorderLayout.CENTER); setSize(250,220); setVisible(true); }
private void createMenu() { // 메뉴바와 Screen 메뉴 생성. Screen 메뉴에 4개의 메뉴아이템 삽입 JMenuBar mb = new JMenuBar(); // 메뉴바 생성 JMenuItem [] menuItem = new JMenuItem [4]; String[] itemTitle = {"불러오기", "숨기기", "다시보기", "닫기"}; JMenu screenMenu = new JMenu("보기");
// 4개의 메뉴아이템을 Screen 메뉴에 삽입한다. MenuActionListener listener = new MenuActionListener(); // Action 리스너 생성 for(int i=0; i<menuItem.length; i++) { menuItem[i] = new JMenuItem(itemTitle[i]); // 메뉴아이템 생성 menuItem[i].addActionListener(listener); // 메뉴아이템에 Action 리스너 등록 screenMenu.add(menuItem[i]); // 메뉴아이템을 Screen 메뉴에 삽입 } mb.add(screenMenu); // 메뉴바에 Screen 메뉴 삽입 setJMenuBar(mb); // 메뉴바를 프레임에 부착 }
class MenuActionListener implements ActionListener { // 메뉴아이템 처리 Action 리스너 public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); // 사용자가 선택한 메뉴아이템의 문자열 리턴 switch(cmd) { // 메뉴 아이템의 종류 구분 case "불러오기" : if(imgLabel.getIcon() != null) return; // 이미 로딩되었으면 리턴 imgLabel.setIcon(new ImageIcon("images/img.jpg")); break; case "숨기기" : imgLabel.setVisible(false); break; case "다시보기" : imgLabel.setVisible(true); break; case "닫기" : System.exit(0); break; } } } public static void main(String [] args) { new MenuActionEventEx(); } } |
실행 결과]
툴바만들기
import javax.swing.*; import java.awt.*;
public class ToolBarEx extends JFrame { private Container contentPane;
public ToolBarEx() { setTitle("툴바 만들기 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPane = getContentPane(); createToolBar(); setSize(400,200); setVisible(true); }
// 툴바를 생성하여 컨텐츠팬에 부착한다. private void createToolBar() { // 툴바 생성 JToolBar toolBar = new JToolBar("Kitae Menu"); // 툴바의 이름 "Kitae Menu" toolBar.setBackground(Color.LIGHT_GRAY);
// 툴바에 메뉴로 사용할 컴포넌트를 삽입한다. toolBar.add(new JButton("New")); toolBar.add(new JButton(new ImageIcon("images/open.jpg"))); toolBar.addSeparator(); toolBar.add(new JButton(new ImageIcon("images/save.jpg"))); toolBar.add(new JLabel("search")); toolBar.add(new JTextField("text field"));
JComboBox<String> combo = new JComboBox<String>(); combo.addItem("Java"); combo.addItem("C#"); combo.addItem("C"); combo.addItem("C++"); toolBar.add(combo);
// 툴바를 컨텐츠팬의 NORTH에 부착한다. contentPane.add(toolBar, BorderLayout.NORTH); }
public static void main(String [] args) { new ToolBarEx(); } } |
실행 결과]
툴바만들기
import javax.swing.*; import java.awt.*;
public class ToolTipEx extends JFrame { private Container contentPane;
public ToolTipEx() { setTitle("툴팁 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPane = getContentPane(); createToolBar(); setSize(400,150); setVisible(true); }
// 툴바를 생성하여 컨텐트팬의 NORTH에 부착한다. private void createToolBar() { JToolBar bar = new JToolBar("Kitae Menu"); // 툴바 생성 bar.setBackground(Color.LIGHT_GRAY);
JButton newBtn = new JButton("New"); newBtn.setToolTipText("파일을 생성합니다."); // New 버튼에 툴팁 달기 bar.add(newBtn);
JButton openBtn = new JButton(new ImageIcon("images/open.jpg")); openBtn.setToolTipText("파일을 엽니다."); // 열기 버튼에 툴팁 달기 bar.add(openBtn); bar.addSeparator();
JButton saveBtn = new JButton(new ImageIcon("images/save.jpg")); saveBtn.setToolTipText("파일을 저장합니다."); // 저장 버튼에 툴팁 달기 bar.add(saveBtn); bar.add(new JLabel("search"));
JTextField tf = new JTextField("text field"); tf.setToolTipText("찾고자하는 문자열을 입력하세요"); // 텍스트필드에 툴팁 달기 bar.add(tf); contentPane.add(bar, BorderLayout.NORTH); }
public static void main(String [] args) { new ToolTipEx(); } } |
실행결과]
다이얼로그박스 생성하기
import java.awt.*; import java.awt.event.*; import javax.swing.*;
class MyDialog extends JDialog { private JTextField tf = new JTextField(10); // 다이얼로그에 삽입할 텍스트 필드 private JButton okButton = new JButton("OK"); // 다이얼로그에 삽입할 OK 버튼
public MyDialog(JFrame frame, String title) { super(frame,title); setLayout(new FlowLayout()); add(tf); add(okButton); setSize(200, 100);
// 다이얼로그의 OK 버튼에 Action 리스너 달기 // OK 버튼이 선택되면 다이얼로그가 화면에서 사라지게 한다. okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(false); // 다이얼로그를 보이지 않게 한다. } }); } }
public class DialogEx extends JFrame{ private MyDialog dialog; // 다이얼로그의 레퍼런스
public DialogEx() { super("dialogEx 예제 프레임"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton btn = new JButton("Show Dialog");
// 다이얼로그 생성 dialog = new MyDialog(this, "Test Dialog");
// Show Dialog 버튼을 선택하면 다이얼로그를 작동시킨다. btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dialog.setVisible(true); // 다이얼로그를 출력하고 작동시킨다. } }); getContentPane().add(btn); setSize(250,200); setVisible(true); } public static void main(String[] args) { new DialogEx(); } } |
실행 결과]
다이얼로그박스에서 입력하고 폼에 출력하기
import java.awt.*; import java.awt.event.*; import javax.swing.*;
class MyModalDialog extends JDialog { private JTextField tf = new JTextField(10); private JButton okButton = new JButton("OK");
public MyModalDialog(JFrame frame, String title) { super(frame, title, true); // true는 모달 타입을 만들도록 지시 setLayout(new FlowLayout()); add(tf); add(okButton); setSize(200, 100);
okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(false); // 다이얼로그를 닫는다. 라인 44에서 리턴하게 한다.. } }); } // 텍스트필드 창에 사용자가 입력한 문자열을 리턴한다. // 입력된 내용이 없으면 null을 리턴한다. public String getInput() { if(tf.getText().length() == 0) return null; else return tf.getText(); } }
public class DialogEx2 extends JFrame{ private MyModalDialog dialog; // 다이얼로그의 레퍼런스
public DialogEx2() { super("DialogEx2 예제 프레임"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton btn = new JButton("Show Modal Dialog");
// 모달 다이얼로그 생성 dialog = new MyModalDialog(this, "Test Modal Dialog");
btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dialog.setVisible(true); // 모달 다이얼로그 작동 시작
// 다이얼로그로부터 사용자가 입력한 문자열을 받아 온다. String text = dialog.getInput();
if(text == null) return; // 입력한 문자열이 없는 경우 JButton btn = (JButton)e.getSource(); btn.setText(text); // 입력한 문자열로 이 버튼의 문자열을 변경한다. } }); getContentPane().add(btn); setSize(250,200); setVisible(true); } public static void main(String[] args) { new DialogEx2(); } } |
실행 결과]
다이얼로그박스 예제1
import javax.swing.*; import java.awt.event.*; import java.awt.*;
public class OptionPaneEx extends JFrame { public OptionPaneEx() { setTitle("옵션 팬 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); setSize(500,200); c.add(new MyPanel(), BorderLayout.NORTH); setVisible(true); }
class MyPanel extends Panel { private JButton inputBtn = new JButton("Input Name"); private JTextField tf = new JTextField(10); private JButton confirmBtn = new JButton("Confirm"); private JButton messageBtn = new JButton("Message");
public MyPanel() { setBackground(Color.LIGHT_GRAY); add(inputBtn); add(confirmBtn); add(messageBtn); add(tf);
inputBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 입력 다이얼로그 생성 String name = JOptionPane.showInputDialog("이름을 입력하세요."); if(name != null) tf.setText(name); // 사용자가 입력한 문자열을 텍스트필드 창에 출력 } });
confirmBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 확인 다이얼로그 생성 int result = JOptionPane.showConfirmDialog(null, "계속할 것입니까?", "Confirm", JOptionPane.YES_NO_OPTION);
// 사용자가 선택한 버튼에 따라 문자열을 텍스트필드 창에 출력 if(result == JOptionPane.CLOSED_OPTION) tf.setText("Just Closed without Selection"); else if(result == JOptionPane.YES_OPTION) tf.setText("Yes"); else tf.setText("No"); } });
messageBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 메시지 다이얼로그 생성 JOptionPane.showMessageDialog(null, "조심하세요", "Message", JOptionPane.ERROR_MESSAGE); } }); } }
public static void main(String [] args) { new OptionPaneEx(); } } |
실행 결과]
이미지출력하기
import javax.swing.*; import javax.swing.filechooser.*; import java.awt.event.*; import java.awt.*;
public class MenuAndFileDialogEx extends JFrame { private JLabel imageLabel = new JLabel();
public MenuAndFileDialogEx() { setTitle("이미지출력하기"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); c.add(imageLabel); createMenu(); setSize(350,200); setVisible(true); }
private void createMenu() { JMenuBar mb = new JMenuBar(); JMenu fileMenu = new JMenu("파일"); JMenuItem openItem = new JMenuItem("불러오기");
openItem.addActionListener(new OpenActionListener()); fileMenu.add(openItem); mb.add(fileMenu); setJMenuBar(mb); }
// Open 메뉴아이템이 선택되면 호출되는 Action 리스너 class OpenActionListener implements ActionListener { private JFileChooser chooser;
public OpenActionListener() { chooser = new JFileChooser(); // 파일 다이얼로그 생성 } public void actionPerformed(ActionEvent e) { FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");
chooser.setFileFilter(filter); // 파일 다이얼로그에 파일 필터 설정 int ret = chooser.showOpenDialog(null); // 파일 다이얼로그 출력 if(ret != JFileChooser.APPROVE_OPTION) { // 사용자가 창을 강제로 닫았거나 취소 버튼을 누른 경우 JOptionPane.showMessageDialog(null, "파일을 선택하지 않았습니다", return; }
String filePath = chooser.getSelectedFile().getPath(); imageLabel.setIcon(new ImageIcon(filePath)); pack(); // 이미지의 크기에 맞추어 프레임 크기 조절 } } public static void main(String [] args) { new MenuAndFileDialogEx(); } } |
실행결과]