JAVA

15일차

구자룡 2021. 4. 13. 16:53

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

'JAVA' 카테고리의 다른 글

14일차  (0) 2021.04.12
13일차  (0) 2021.04.09
12일차  (0) 2021.04.08
11일차  (0) 2021.04.08
10일차  (0) 2021.04.07