반응형
1. JLabel 컴포넌트는 Mouse 이벤트를 받을 수 있다. JLabel 컴포넌트에 마우스를 올리면 "Love Java"가, 내리면 "사랑해"가 출력되도록 스윙 응용프로그램을 작성하라.
package chapter10;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Q1 extends JFrame{
private JLabel la = new JLabel("사랑해");
public Q1() {
setTitle("마우스 올리기 내리기");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(la);
la.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
JLabel label = (JLabel)e.getSource();
label.setText("Love java");
}
public void mouseExited(MouseEvent e) {
JLabel label = (JLabel)e.getSource();
label.setText("사랑해");
}
});
setSize(300, 300);
setVisible(true);
}
public static void main(String[] args) {
new Q1();
}
}
2. 컨텐트팬의 배경색은 초록색으로 하고 마우스를 드래깅하는 동안만 노란색으로 유지하는 스윙 응용프로그램을 작성하라.
package chapter10;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Q2 extends JFrame{
public Q2() {
setTitle("while dragging");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 300);
setVisible(true);
Container c = getContentPane();
c.setBackground(Color.green);
c.addMouseMotionListener(new MouseAdapter() {
public void mouseDragged(MouseEvent e) {
c.setBackground(Color.yellow);
}
});
c.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
c.setBackground(Color.green);
}
});
}
public static void main(String[] args) {
new Q2();
}
}
3. JLabel을 활용하여 "Love Java"를 출력하고 왼쪽 화살표 키(<Left> 키)를 입력할 때마다 "avaJ evol"와 "Love Java"를 번갈아 출력하는 스윙 프로그램을 작성하라.
package chapter10;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Q3 extends JFrame{
public Q3() {
setTitle("Change by left key");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 300);
setVisible(true);
Container c = getContentPane();
c.setLayout(new FlowLayout());
JLabel la = new JLabel("Love java");
c.add(la);
la.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_LEFT){
JLabel label = (JLabel)e.getSource();
StringBuffer text = new StringBuffer(label.getText());
label.setText(text.reverse().toString());
}
}
});
la.setFocusable(true);
la.requestFocus();
}
public static void main(String[] args) {
new Q3();
}
}
4. JLabel을 활용하여 "Love Java"를 출력하고 왼쪽 화살표 키(<Left> 키)를 입력할 때마다 "ove JavaL", "ve JavaLo", "e JavaLov"와 같이 한 문자씩 왼쪽으로 회전하는 프로그램을 작성하라.
package chapter10;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Q4 extends JFrame {
public Q4() {
setTitle("Rotate by Left Key"); //제목 설정
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //프레임 종료 시 프로그램 종료
setSize(300, 300); //크기 설정
setVisible(true); //창 보이기
Container c = getContentPane(); //컨텐트팬 생성
c.setLayout(new FlowLayout()); //flow 레이아웃 설정
JLabel la = new JLabel("Love java"); //label의 텍스트는 Love java
c.add(la); //컨텐트팬에 부착
la.setFocusable(true);
la.requestFocus();
la.addKeyListener(new KeyAdapter() { //익명 리스너
public void keyPressed(KeyEvent e) { //키가 눌리면 이벤트 발생
if (e.getKeyCode() == KeyEvent.VK_LEFT){ //입력된 키가 왼쪽 화살표면
JLabel label = (JLabel)e.getSource(); //이벤트 발생 시 레퍼런스 리턴
//수정이 용이한 StringBuffer 객체 생성. label의 텍스트를 받음
StringBuffer text = new StringBuffer(label.getText());
//현재 text의 첫 문자를 text의 끝에 추가
text = text.append(text.substring(0, 1));
//첫 문자를 지우고 String객체로 바꾸어 label의 text로 설정
label.setText(text.deleteCharAt(0).toString());
}
}
});
//포커스 설정
}
public static void main(String[] args) {
new Q4();
}
}
5. JLabel 컴포넌트로 "Love Java"를 출력하고, 키 리스너를 작성하여 +키를 치면 폰트 크기를 5픽셀씩 키우고, -키를 치면 폰트 크기를 5픽셀씩 줄이는 스윙 응용프로그램을 작성하라. 5픽셀 이하로 작아지지 않도록 하라.
package chapter10;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Q5 extends JFrame{
public Q5() {
setTitle("Set Size"); //제목 설정
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //프레임 종료 시 프로그램 종료
setSize(300, 300); //크기 설정
setVisible(true); //창 보이기
Container c = getContentPane(); //컨텐트팬 생성
c.setLayout(new FlowLayout()); //flow 레이아웃 설정
JLabel la = new JLabel("Love Java");
la.setFont(new Font("Arial", Font.PLAIN, 10));
c.add(la);
la.setFocusable(true);
la.requestFocus();
la.addKeyListener(new KeyAdapter() { //익명 리스너
public void keyPressed(KeyEvent e) { //키가 눌리면 이벤트 발생
if (e.getKeyChar() == '+'){
JLabel label = (JLabel)e.getSource();
Font f = label.getFont();
int size = f.getSize();
label.setFont(new Font("Arial", Font.PLAIN, size+5));
}
else if (e.getKeyChar() == '-'){
JLabel label = (JLabel)e.getSource();
Font f = label.getFont();
int size = f.getSize();
if (size <= 5) return;
label.setFont(new Font("Arial", Font.PLAIN, size-5));
}
}
});
}
public static void main(String[] args) {
new Q5();
}
}
6. 클릭 연습용 스윙 응용프로그램을 작성하라. "C"를 출력하는 JLabel을 하나 만들고 초기 위치를 (100, 100)으로 하고, "C"를 클릭할 때마다 컨텐트팬 내에 랜덤한 위치로 움직이게 하라.
package chapter10;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Q6 extends JFrame{
public Q6() {
setTitle("RandomC"); //제목 설정
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //프레임 종료 시 프로그램 종료
setSize(300, 300); //크기 설정
setVisible(true); //창 보이기
Container c = getContentPane(); //컨텐트팬 생성
c.setLayout(null);
JLabel la = new JLabel("C");
la.setSize(10, 10);
la.setLocation(100, 100);
c.add(la);
la.setFocusable(true);
la.requestFocus();
la.addMouseListener(new MouseAdapter() { //익명 리스너
public void mouseClicked(MouseEvent e) { //키가 눌리면 이벤트 발생
JLabel label = (JLabel)e.getSource(); //이벤트 발생 시 레퍼런스 리턴
label.setLocation((int)(Math.random()*250), (int)(Math.random()*250));
}
});
}
public static void main(String[] args) {
new Q6();
}
}
7. JLabel을 활용하여 "Love Java"를 출력하고, "Love Java" 글자 위에 마우스를 올려 마우스 휠을 위로 굴리면 글자가 작아지고, 아래로 굴리면 글자가 커지도록 프로그램을 작성하라. 폰트 크기는 한 번에 5픽셀씩 작아지거나 커지도록 하고, 5픽셀 이하로 작아지지 않도록 하라.
package chapter10;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Q7 extends JFrame{
public Q7() {
setTitle("MouseWheel"); //제목 설정
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //프레임 종료 시 프로그램 종료
setSize(300, 300); //크기 설정
setVisible(true); //창 보이기
Container c = getContentPane(); //컨텐트팬 생성
c.setLayout(new FlowLayout()); //flow 레이아웃 설정
JLabel la = new JLabel("Love Java");
la.setFont(new Font("Arial", Font.PLAIN, 15));
c.add(la);
la.setFocusable(true);
la.requestFocus();
la.addMouseWheelListener(new MouseWheelListener() { //익명 리스너
public void mouseWheelMoved(MouseWheelEvent e) { //키가 눌리면 이벤트 발생
int n = e.getWheelRotation();
if(n < 0) {
JLabel label = (JLabel)e.getSource(); //이벤트 발생 시 레퍼런스 리턴
Font f = label.getFont();
int size = f.getSize();
label.setFont(new Font("Arial", Font.PLAIN, size+5));
}
else {
JLabel label = (JLabel)e.getSource(); //이벤트 발생 시 레퍼런스 리턴
Font f = label.getFont();
int size = f.getSize();
if (size <= 5) return;
label.setFont(new Font("Arial", Font.PLAIN, size-5));
}
}
});
}
public static void main(String[] args) {
new Q7();
}
}
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
<명품 JAVA Programming> - Chapter9 실습문제 (0) | 2020.11.29 |
---|---|
<명품 JAVA Programming> - Chapter8 실습문제 (0) | 2020.11.25 |
<명품 JAVA Programming> - Chapter7 실습문제 (0) | 2020.11.20 |
<명품 JAVA Programming> - Chapter6 실습문제 (0) | 2020.11.17 |
<명품 JAVA Programming> - Chapter5 연습문제(9, 10, 11, 12, 13, 14) (0) | 2020.11.09 |