본문 바로가기
Programming Study/명품자바프로그래밍

[명품자바프로그래밍] 10장 실습문제(2)

by 푸고배 2018. 10. 4.

5. JLbel 컴포넌트는 Key 이벤트를 받을 수 있다. JLabel 컴포넌트를 이용하여 "Love Java"를 출력하고 +키를 치면 폰트 크기를 5픽셀씩 키우고, -키를 치면 폰트 크기를 5픽셀씩 줄이는 스윙 응용프로그램을 작성하라. 5픽셀 이하로 작아지지 않도록 하라.

<소스코드>

package Chapter10;
//JLabel 컴포넌트는 Key 이벤트를 받을 수 있다. JLabel 컴포넌트를 이용하여 "Love Java"를
//출력하고 + 키를 치면 폰트 크기를 5픽셀씩 키우고, -키를 치면 폰트 크기를 5픽셀씩 줄이는 스윙 응용프로그램을 작성하라.
//5픽셀 이하로 작아지지 않도록하라.

import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;


public class Chapter10_5 extends JFrame {
	JLabel label; 
	Chapter10_5(){
		setTitle("+,- 키로 폰트 크기 조절"); // 제목 지정
		setLayout(new FlowLayout());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 닫기 버튼을 눌렀을 시 화면 닫기
		
		label= new JLabel("Love Java");
		label.setSize(200,50);
		label.setFont(new Font("Arial",Font.PLAIN,10));
		// Arial 폰트로 10픽셀 크기
		
		label.addKeyListener(new MyKeyAdapter());
		// Jabel 컴포넌트 생성 후 KeyListener를 단다.
		
		add(label);
		setSize(400,200);
		setVisible(true);
		label.requestFocus();
		// 컨텐트팬이 키 입력을 받을 수 있도록 포커스 강제 지정
		
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Chapter10_5();
		
	}

	class MyKeyAdapter extends KeyAdapter{
		public void keyPressed(KeyEvent e) {
			Font f = label.getFont();
			int size = f.getSize(); // label의 font size 구하기
			
			switch(e.getKeyCode()) {
				case 45: // -키 눌렀을 경우
					if(size>5) { // 5보다 클때만
						label.setFont(new Font("Arial", Font.PLAIN,size-5));
					}
					break;
				case 61: // +나=키 놀렀을 경우
					label.setFont(new Font("Arial", Font.PLAIN,size+5));
					break;
			}
		}
	}
}

 

6. 클릭 연습용 스윙 응용프로그램을 작성하라. JLabel을 이용하여 문자열이 "C"인 레이블을 하나 만들고 초기 위치를 (100, 100)으로 하라. 문자열을 클릭할 때마다 레이블은 프레임 내의 랜덤한 위치로 움직인다.

<소스코드>

package Chapter10;

import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;

//클릭 연습용 스윙 응용프로그램을 작성하라. 
//JLabel을 이용하여 문자열이 "C"인 레이블을 하나만들고 초기 위치를 (100,100)으로 하라.
//문자열을 클릭할 때마다 레이블은 프레임 내의 랜덤한 위치로 움직인다.
public class Chapter10_6 extends JFrame{
	JLabel label; 
	Chapter10_6(){
		setTitle("클릭 연습용 응용프로그램"); // 제목 지정
		setLayout(null);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 닫기 버튼을 눌렀을 시 화면 닫기
		
		label= new JLabel("Love Java");
		label.setSize(100,50);
		label.setLocation(100,100);
		label.addMouseListener(new MyMouseAdapter());
		// Jabel 컴포넌트 생성 후 MouseListener를 단다.
		
		add(label);
		setSize(500,500);
		setVisible(true);
		label.requestFocus();
		// 컨텐트팬이 키 입력을 받을 수 있도록 포커스 강제 지정
		
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Chapter10_6();
	}
	
	class MyMouseAdapter extends MouseAdapter{
		int x,y;
		public void mousePressed(MouseEvent e) {
			x = (int)(Math.random()*400); // 여백을 조금 남기기 위해 400으로 지정
			y = (int)(Math.random()*400); // 여백을 조금 남기기 위해 400으로 지정
			label.setLocation(x,y);
		}
	}
}

 

 

7. JLbel을 활용하여 "Love Java"를 출력하고, "Love Java" 글자 위에 마우스를 올려 마우스 휠을 위로 굴리면 글자가 작아지고, 아래로 굴리면 글자가 커지도록 프로그램을 작성하라. 폰트 크기는 한 번에 5픽셀씩 작아지거나 커지도록 하고, 5픽셀 이하로 작아지지 않도록 하라.

<소스코드>

package Chapter10;

import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;

import javax.swing.JFrame;
import javax.swing.JLabel;


//JLavel을 활용하여 "Lobe Java"를 출력하고, "Love Java" 글자 위에 마우스를 올려 마우스 휠을 위로 굴리면 글자가 작아지고,
//아래로 굴리면 글자가 커지도록 프로그램을 작성하라. 폰트 크기는 한 번에 5픽셀씩 작아지거나 커지도록 하고, 5픽셀 이하로 작아지지않도록 하라.

public class Chapter10_7 extends JFrame{
	JLabel label; 
	Chapter10_7(){
		setTitle("마우스 휠을 굴려 폰트 크기 수정 응용프로그램"); // 제목 지정
		setLayout(new FlowLayout());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 닫기 버튼을 눌렀을 시 화면 닫기
		
		label= new JLabel("Love Java");
		label.setSize(200,50);
		label.setFont(new Font("Arial",Font.PLAIN,10));
		// Arial 폰트로 10픽셀 크기
		
		label.addMouseWheelListener(new MyMouseWheelListener());
		// Jabel 컴포넌트 생성 후 MouseListener를 단다.
		
		add(label);
		setSize(400,200);
		setVisible(true);
		label.requestFocus();
		// 컨텐트팬이 키 입력을 받을 수 있도록 포커스 강제 지정
		
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Chapter10_7();
	}
	
	class MyMouseWheelListener implements MouseWheelListener{
		Font f;
		int size; // label의 font size 구하기
		int n;
		@Override
		public void mouseWheelMoved(MouseWheelEvent e) {
			// TODO Auto-generated method stub
			f = label.getFont();
			size =f.getSize();
			n = e.getWheelRotation();
			if(n<0&&size>5) // up direction. 폰트 5픽셀 작게
				label.setFont(new Font("Arial", Font.PLAIN,size-5));
			else // down direction. 폰트 5픽셀 크게
				label.setFont(new Font("Arial", Font.PLAIN,size+5));
		}
		
	}

}

참고자료 : 생능출판 명품 JAVA Programming

github 주소 : 

https://github.com/ch1517/Masterwork-JAVA-Programming/tree/master/Chapter10

반응형

댓글