on
[명품 Java] 10장 실습문제 (자바의 이벤트 처리)
[명품 Java] 10장 실습문제 (자바의 이벤트 처리)
728x90
[10장 1번] JLabel 컴포넌트는 Mouse 이벤트를 받을 수 있다. JLabel 컴포넌트에 마우스를 올리면 "Love Java"가, 내리면 "사랑해"가 출력되도록 스윙 응용프로그램을 작성하라
package Java10_1; import javax.swing.*; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class Java10_1 extends JFrame{ private JLabel la = new JLabel("사랑해"); Java10_1(){ super("마우스 올리기 내리기"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); c.setLayout(new FlowLayout()); c.add(la); la.addMouseListener(new MouseAdapter() { @Override public void mouseEntered(MouseEvent e) { JLabel b = (JLabel)e.getSource(); b.setText("Love Java"); } @Override public void mouseExited(MouseEvent e) { JLabel b = (JLabel)e.getSource(); b.setText("사랑해"); } }); setSize(400, 400); setVisible(true); c.setFocusable(true); c.requestFocus(); } public static void main(String[] args) { new Java10_1(); } }
[10장 2번] 컨텐트팬의 배경색은 초록색으로 하고 마우스를 드래깅하는 동안만 노란색으로 유지하는 스윙 응용프로그램을 작성하라
package Java10_2; import javax.swing.*; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; public class Java10_2 extends JFrame{ Java10_2(){ super("드래깅동안 YELLOW"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); c.setBackground(Color.GREEN); c.addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseDragged(MouseEvent e) { Container c = (Container)e.getSource(); c.setBackground(Color.YELLOW); } }); c.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { Container c = (Container)e.getSource(); c.setBackground(Color.GREEN); } }); setSize(400, 400); setVisible(true); c.setFocusable(true); c.requestFocus(); } public static void main(String[] args) { new Java10_2(); } }
[10장 3번] JLabel을 활용하여 "Love Java"를 출력하고 왼쪽 화살표 키( 키)를 입력할 때마다 "avaJ evoL"와 "Love Java"를 번갈아 출력하는 스윙 프로그램을 작성하라
package Java10_3; import javax.swing.*; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; public class Java10_3 extends JFrame { private JLabel la = new JLabel("Love Java"); Java10_3(){ super("Left 키로 문자열 교체"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); c.setLayout(new FlowLayout()); c.add(la); c.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { int keyCode = e.getKeyCode(); switch(keyCode){ case KeyEvent.VK_LEFT: if(la.getText().equals("Love Java")) la.setText("avaJ evoL"); else la.setText("Love Java"); break; default: break; } } }); setSize(400, 400); setLocationRelativeTo(null); setVisible(true); c.setFocusable(true); c.requestFocus(); } public static void main(String[] args) { new Java10_3(); } }
[10장 4번] JLabel을 활용하여 "Love Java"를 출력하고 왼쪽 화살표 키( 키)를 입력할 때마다 "ove JavaL", "ve JavaLo", "e JavaLov"와 같이 한 문자씩 왼쪽으로 회전하는 프로그램을 작성하라
package Java10_4; import javax.swing.*; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; public class Java10_4 extends JFrame { private JLabel la = new JLabel("Love Java"); private String str = "Love Java"; Java10_4(){ super("Left 키로 문자열 이동"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); c.setLayout(new FlowLayout()); c.add(la); c.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_LEFT){ str = str.substring(1) + str.substring(0, 1); la.setText(str); } } }); setSize(400, 400); setLocationRelativeTo(null); setVisible(true); c.setFocusable(true); c.requestFocus(); } public static void main(String[] args) { new Java10_4(); } }
[10장 5번] JLabel 컴포넌트로 "Love Java"를 출력하고, 키 리스너를 작성하여 +키를 치면 폰트 크기를 5픽셀씩 키우고, -키를 치면 폰트 크기를 5픽셀씩 줄이는 스윙 응용프로그램을 작성하라. 5픽셀 이하로 작아지지 않도록 하라
package Java10_5; import javax.swing.*; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; public class Java10_5 extends JFrame{ private JLabel la = new JLabel("Love Java"); Java10_5(){ super("+,-키로 폰트 크기 조절"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); c.setLayout(new FlowLayout()); la.setFont(new Font("Arial", Font.PLAIN, 10)); c.add(la); c.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { Font f = la.getFont(); int size = f.getSize(); switch(e.getKeyCode()) { case 61://+ la.setFont(new Font("Arial", Font.PLAIN, size + 5)); break; case 45: if (size > 5) { la.setFont(new Font("Arial", Font.PLAIN, size - 5)); } break; } } }); setSize(400, 400); setLocationRelativeTo(null); setVisible(true); c.setFocusable(true); c.requestFocus(); } public static void main(String[] args) { new Java10_5(); } }
[10장 6번] 클릭 연습용 스윙 응용프로그램을 작성하라. "C"를 출력하는 JLabel을 하나 만들고 초기 위치를 (100, 100)으로 하고, "C"를 클릭할 때마다 컨텐트팬 내에 랜덤한 위치로 움직이게 하라
package Java10_6; import javax.swing.*; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class Java10_6 extends JFrame { private JLabel la = new JLabel("C"); Java10_6(){ super("클릭 연습 용 응용프로그램"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); c.setLayout(null); la.setBounds(100, 100, 50, 50); c.add(la); c.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { int x = (int)(Math.random()*390); int y = (int)(Math.random()*390); la.setLocation(x, y); } }); setSize(400, 400); setLocationRelativeTo(null); setVisible(true); c.setFocusable(true); c.requestFocus(); } public static void main(String[] args) { new Java10_6(); } }
[10장 7번] JLabel을 활용하여 "Love Java"를 출력하고, "Love Java" 글자 위에 마우스를 올려 마우스 휠을 위로 굴리면 글자가 작아지고, 아래로 굴리면 글자가 커지도록 프로그램을 작성하라. 폰트 크기는 한 번에 5픽셀씩 작아지거나 커지도록 하고, 5픽셀 이하로 작아지지 않도록 하라.
package Java10_7; import javax.swing.*; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseWheelEvent; public class Java10_7 extends JFrame { private JLabel la = new JLabel("Love Java"); Java10_7(){ super("마우스 휠을 굴려 폰트 크기 조절"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); c.setLayout(new FlowLayout()); la.setFont(new Font("Arial", Font.PLAIN, 10)); c.add(la); la.addMouseWheelListener(new MouseAdapter() { @Override public void mouseWheelMoved(MouseWheelEvent e) { int n = e.getWheelRotation(); // 음수면 휠 위로, 양수면 휠 아래로 Font f = la.getFont(); int size = f.getSize(); if(n>0) la.setFont(new Font("Arial", Font.PLAIN, size + 5)); else{ if (size > 5) { la.setFont(new Font("Arial", Font.PLAIN, size - 5)); } } } }); setSize(400, 400); setLocationRelativeTo(null); setVisible(true); c.setFocusable(true); c.requestFocus(); } public static void main(String[] args) { new Java10_7(); } }
728x90
반응형
from http://cs-ssupport.tistory.com/184 by ccl(A) rewrite - 2021-12-20 19:01:30