import javax.swing.*;
public class Exam01 extends JFrame {
public Exam01() {
setTitle("Menu 만들기 예제");
createMenu();
setSize(250,200);
setVisible(true);
}
private void createMenu() {
JMenuBar mb = new JMenuBar();
JMenu screenMenu = new JMenu("Screen");
screenMenu.add(new JMenuItem("Load"));
screenMenu.add(new JMenuItem("Hide"));
screenMenu.add(new JMenuItem("ReShow"));
screenMenu.addSeparator();
screenMenu.add(new JMenuItem("Exit"));
mb.add(screenMenu);
mb.add(new JMenu("Edit"));
mb.add(new JMenu("Source"));
mb.add(new JMenu("Project"));
mb.add(new JMenu("Run"));
setJMenuBar(mb);
}
public static void main(String[]ar) {
new Exam01();
}
}
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Exam02 extends JFrame {
private JLabel imgLabel = new JLabel(); // 빈 이미지를 가진 레이블
public Exam02() {
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 = {"Load", "Hide", "ReShow", "Exit"};
JMenu screenMenu = new JMenu("Screen");
// 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 "Load" :
if(imgLabel.getIcon() != null)
return; // 이미 로딩되었으면 리턴
imgLabel.setIcon(new ImageIcon("images/img.jpg"));
break;
case "Hide" :
imgLabel.setVisible(false);
break;
case "ReShow" :
imgLabel.setVisible(true);
break;
case "Exit" :
System.exit(0);
break;
}
}
}
public static void main(String [] args) {
new Exam02();
}
}
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 Exam06 extends JFrame{
private MyDialog dialog; // 다이얼로그의 레퍼런스
public Exam06() {
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 Exam06();
}
}
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 Exam07 extends JFrame{
private MyModalDialog dialog; // 다이얼로그의 레퍼런스
public Exam07() {
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 Exam07();
}
}
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Exam10 extends JFrame {
private JLabel label = new JLabel("Hello");
public Exam10() {
setTitle("JColorChooser 예제");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setFont(new Font("Ravie", Font.ITALIC,30));
c.add(label,BorderLayout.CENTER);
createMenu();
setSize(250,200);
setVisible(true);
}
private void createMenu() {
JMenuBar mb = new JMenuBar();
JMenuItem colorMenuItem = new JMenuItem("Color");
JMenu fileMenu = new JMenu("Text");
colorMenuItem.addActionListener(new MenuActionListener());
fileMenu.add(colorMenuItem);
mb.add(fileMenu);
this.setJMenuBar(mb);
}
class MenuActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
if(cmd.equals("Color")) {
Color selectedColor = JColorChooser.showDialog(null, "Color", Color.YELLOW);
if(selectedColor != null)
label.setForeground(selectedColor);
}
}
}
public static void main(String[]ar) {
new Exam10();
}
}
import javax.swing.*;
import java.awt.*;
public class Exam11 extends JFrame {
public Exam11() {
setTitle("탭팬 만들기 예제");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
JTabbedPane pane = createTabbedPane(); // 탭팬을 생성한다.
c.add(pane, BorderLayout.CENTER); // 탭팬을 컨텐트팬에 부착한다.
setSize(250,250);
setVisible(true);
}
// 탭팬을 생성하고 3개의 탭을 생성하여 부착한다.
private JTabbedPane createTabbedPane() {
JTabbedPane pane = new JTabbedPane(); // 탭팬 객체를 생성한다.
pane.addTab("tab1", new JLabel(new ImageIcon("images/img1.jpg"))); // 첫 번째 탭
pane.addTab("tab2", new JLabel(new ImageIcon("images/img2.jpg"))); // 두 번째 탭
pane.addTab("tab3", new MyPanel()); // 세 번째 탭
return pane;
}
// 3번째 탭의 컴포넌트로 사용될 패널
class MyPanel extends JPanel {
public MyPanel() {
this.setBackground(Color.YELLOW);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(10,10,50,50);
g.setColor(Color.BLUE);
g.fillOval(10,70,50,50);
g.setColor(Color.BLACK);
g.drawString("tab 3에 들어가는 JPanel 입니다. ", 30, 50);
}
}
public static void main(String [] args) {
new Exam11();
}
}