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
반응형
'Programming Study > 명품자바프로그래밍' 카테고리의 다른 글
[명품자바프로그래밍] 8장 Open Challenge(2) (0) | 2019.11.12 |
---|---|
[명품자바프로그래밍] 10장 Open Challenge (0) | 2018.10.04 |
[명품자바프로그래밍] 10장 실습문제(1) (0) | 2018.10.04 |
[명품자바프로그래밍] 9장 Open Challenge (0) | 2018.10.03 |
[명품자바프로그래밍] 9장 실습문제 (0) | 2018.09.30 |
댓글