Skip to content

Commit cf08533

Browse files
ch1517ch1517
ch1517
authored and
ch1517
committed
Java Programming Example Chapter10
1 parent 3c80e2c commit cf08533

28 files changed

+509
-0
lines changed

Chapter10/.classpath

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
4+
<classpathentry kind="src" path="src"/>
5+
<classpathentry kind="output" path="bin"/>
6+
</classpath>

Chapter10/.project

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>Chapter10</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.jdt.core.javabuilder</name>
10+
<arguments>
11+
</arguments>
12+
</buildCommand>
13+
</buildSpec>
14+
<natures>
15+
<nature>org.eclipse.jdt.core.javanature</nature>
16+
</natures>
17+
</projectDescription>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
eclipse.preferences.version=1
2+
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3+
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4+
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5+
org.eclipse.jdt.core.compiler.compliance=1.8
6+
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7+
org.eclipse.jdt.core.compiler.debug.localVariable=generate
8+
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9+
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10+
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11+
org.eclipse.jdt.core.compiler.source=1.8
1.03 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.
1.38 KB
Binary file not shown.
Binary file not shown.
1.27 KB
Binary file not shown.
Binary file not shown.
1.22 KB
Binary file not shown.
Binary file not shown.
1.29 KB
Binary file not shown.
Binary file not shown.
1.18 KB
Binary file not shown.
Binary file not shown.
1.35 KB
Binary file not shown.
790 Bytes
Binary file not shown.
Binary file not shown.
Binary file not shown.
+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package Chapter10;
2+
3+
import java.awt.FlowLayout;
4+
import java.awt.event.MouseAdapter;
5+
import java.awt.event.MouseEvent;
6+
7+
import javax.swing.JFrame;
8+
import javax.swing.JLabel;
9+
10+
//JLabel 컴포넌트는 Mouse 이벤트를 받을 수 있다. JLabel 컴포넌트에 마우스를 올리면
11+
//"Love Java"가, 내리면 "사랑해"가 출력되도록 스윙 응용프로그램을 작성하라.
12+
public class Chapter10_1 extends JFrame{
13+
14+
Chapter10_1(){
15+
setTitle("마우스 올리기 내리기 예제"); // 제목 지정
16+
setLayout(new FlowLayout());
17+
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
18+
// 닫기 버튼을 눌렀을 시 화면 닫기
19+
20+
JLabel label = new JLabel("Love Java");
21+
22+
// Jabel 컴포넌트 생성 후 MouseListener를 단다.
23+
label.addMouseListener(new MyMouseAdapter());
24+
25+
label.setSize(200,50);
26+
add(label);
27+
setSize(400,200);
28+
setVisible(true);
29+
30+
}
31+
public static void main(String[] args) {
32+
// TODO Auto-generated method stub
33+
new Chapter10_1();
34+
}
35+
36+
}
37+
// MouseAdapter를 상속 받는 MyMouseAdapter 클래스
38+
class MyMouseAdapter extends MouseAdapter{
39+
public void mouseEntered(MouseEvent e) {
40+
// 마우스가 label 컴포넌트 위에 올라왔을 때
41+
JLabel l = (JLabel)e.getSource();
42+
l.setText("사랑해");
43+
}
44+
public void mouseExited(MouseEvent e) {
45+
// 컴포넌트 위에 올라온 마우스가 컴포넌ㄴ트를 벗어났을 때
46+
JLabel l = (JLabel)e.getSource();
47+
l.setText("Love Java");
48+
}
49+
}
+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package Chapter10;
2+
3+
import java.awt.Color;
4+
import java.awt.FlowLayout;
5+
import java.awt.event.MouseAdapter;
6+
import java.awt.event.MouseEvent;
7+
import java.awt.event.MouseMotionAdapter;
8+
9+
import javax.swing.JFrame;
10+
import javax.swing.JLabel;
11+
import javax.swing.JPanel;
12+
13+
//컨텐트팬의 배경색은 초록색으로 하고 마우스를 드래깅하는 동안만 노란색으로 유지하는 스윙 응용 프로그램을 작성하라.
14+
public class Chapter10_2 extends JFrame{
15+
JPanel contentPane = new JPanel(); // 컨텐트팬으로 사용할 패널
16+
Chapter10_2(){
17+
setTitle("드래깅동안 YELLO"); // 제목 지정
18+
setLayout(new FlowLayout());
19+
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
20+
// 닫기 버튼을 눌렀을 시 화면 닫기
21+
22+
setContentPane(contentPane);
23+
contentPane.setBackground(Color.GREEN);
24+
// JPanel에 MouseMotionListener 추가
25+
contentPane.addMouseMotionListener(new MyMouseMotionAdapter());
26+
// JPanel에 MouseListener 추가
27+
contentPane.addMouseListener(new MyMouseAdapter2());
28+
setSize(400,200);
29+
setVisible(true);
30+
}
31+
public static void main(String[] args) {
32+
// TODO Auto-generated method stub
33+
new Chapter10_2();
34+
}
35+
//MouseMotionAdapter를 상속 받는 MyMouseMotionAdapter 클래스
36+
class MyMouseMotionAdapter extends MouseMotionAdapter{
37+
public void mouseDragged(MouseEvent e) {
38+
// 마우스가 드래그되는 동안
39+
contentPane.setBackground(Color.YELLOW);
40+
}
41+
}
42+
//MouseAdapter를 상속 받는 MyMouseAdapter2 클래스
43+
class MyMouseAdapter2 extends MouseAdapter{
44+
public void mouseReleased(MouseEvent e) {
45+
// 눌러진 마우스 버튼이 떼어질 때
46+
contentPane.setBackground(Color.GREEN);
47+
}
48+
}
49+
}
+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package Chapter10;
2+
3+
import java.awt.*;
4+
import java.awt.event.KeyAdapter;
5+
import java.awt.event.KeyEvent;
6+
7+
import javax.swing.*;
8+
9+
// JLabel을 활용하여 "Love Java"를 출력하고 왼쪽 화살표 키 (<Left> 키)를 입력할 때 마다
10+
// "avaJ evoL"와 "Love Java"를 번갈아 출력하는 스윙 프로그램을 작성하라.
11+
// StringBuffer 클래스의 reverse() 메소드를 이용하여 구현하는 것과 JLavel에 포커스를 설정하는 것을 잊지 말아야 한다.
12+
13+
public class Chapter10_3 extends JFrame{
14+
JLabel label;
15+
// "Love Java"를 거꾸로 출력하기 위해 StringBuffer 생성
16+
StringBuffer s = new StringBuffer("Love Java");
17+
Chapter10_3(){
18+
setTitle("Left 키로 문자열 바꾸기 예제"); // 제목 지정
19+
setLayout(new FlowLayout());
20+
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
21+
// 닫기 버튼을 눌렀을 시 화면 닫기
22+
23+
label= new JLabel("Love Java");
24+
25+
// Jabel 컴포넌트 생성 후 KeyListener를 단다.
26+
label.addKeyListener(new MyKeyAdapter());
27+
28+
label.setSize(200,50);
29+
add(label);
30+
setSize(400,200);
31+
setVisible(true);
32+
label.requestFocus();
33+
// 컨텐트팬이 키 입력을 받을 수 있도록 포커스 강제 지정
34+
35+
}
36+
public static void main(String[] args) {
37+
// TODO Auto-generated method stub
38+
new Chapter10_3();
39+
}
40+
class MyKeyAdapter extends KeyAdapter{
41+
public void keyPressed(KeyEvent e) {
42+
switch(e.getKeyCode()) { // 입력받은 코드가
43+
case KeyEvent.VK_LEFT: //<Left> 키 일때
44+
if(label.getText().equals("Love Java")) { // "Love Java"일 때
45+
label.setText(s.reverse().toString());
46+
// s.reverse()를 하면 따로 변수에 담지 않아도 s 자체가 바뀜
47+
}
48+
else {
49+
label.setText(s.reverse().toString());
50+
}
51+
break;
52+
default:
53+
break;
54+
}
55+
}
56+
}
57+
58+
}
+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package Chapter10;
2+
3+
import java.awt.FlowLayout;
4+
import java.awt.event.KeyAdapter;
5+
import java.awt.event.KeyEvent;
6+
7+
import javax.swing.JFrame;
8+
import javax.swing.JLabel;
9+
10+
11+
//JLabel을 활용하여 "Love Java"를 출력하고 왼쪽 화살표 키(<Left>키)를 입력할 때마다
12+
//"ove JavaL", "ve JavaLo", "e JavaLov" 등과 같이 계속 한 문자씩 왼쪽으로 이동하는 스윙 프로그램을 작성하라.
13+
//문자열의 이동은 String 클래스의 substring() 메소드를 이용하여 구현하라.
14+
//String text = "Love Java"인 경우, text.substring(0,1)은 "L"을 리턴하고, text.substring(1)은
15+
//"ove Java"를 리턴한다. JLavel에 포커스 설정하는 것을 잊지 말아야한다.
16+
public class Chapter10_4 extends JFrame{
17+
18+
JLabel label;
19+
String text = "Love Java";
20+
Chapter10_4(){
21+
setTitle("Left 키로 문자열 바꾸기 예제"); // 제목 지정
22+
setLayout(new FlowLayout());
23+
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
24+
// 닫기 버튼을 눌렀을 시 화면 닫기
25+
26+
label= new JLabel("Love Java");
27+
28+
// Jabel 컴포넌트 생성 후 KeyListener를 단다.
29+
label.addKeyListener(new MyKeyAdapter());
30+
31+
label.setSize(200,50);
32+
add(label);
33+
setSize(400,200);
34+
setVisible(true);
35+
label.requestFocus();
36+
// 컨텐트팬이 키 입력을 받을 수 있도록 포커스 강제 지정
37+
38+
}
39+
public static void main(String[] args) {
40+
// TODO Auto-generated method stub
41+
new Chapter10_4();
42+
}
43+
class MyKeyAdapter extends KeyAdapter{
44+
public void keyPressed(KeyEvent e) {
45+
switch(e.getKeyCode()) { // 입력받은 코드가
46+
case KeyEvent.VK_LEFT: //<Left> 키 일때
47+
label.setText(text); // text 한칸씩 앞으로 당김
48+
text = text.substring(1)+text.substring(0, 1);
49+
break;
50+
default:
51+
break;
52+
}
53+
}
54+
}
55+
56+
}
+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package Chapter10;
2+
//JLabel 컴포넌트는 Key 이벤트를 받을 수 있다. JLabel 컴포넌트를 이용하여 "Love Java"를
3+
//출력하고 + 키를 치면 폰트 크기를 5픽셀씩 키우고, -키를 치면 폰트 크기를 5픽셀씩 줄이는 스윙 응용프로그램을 작성하라.
4+
//5픽셀 이하로 작아지지 않도록하라.
5+
6+
import java.awt.FlowLayout;
7+
import java.awt.Font;
8+
import java.awt.event.KeyAdapter;
9+
import java.awt.event.KeyEvent;
10+
11+
import javax.swing.JFrame;
12+
import javax.swing.JLabel;
13+
14+
15+
public class Chapter10_5 extends JFrame {
16+
JLabel label;
17+
Chapter10_5(){
18+
setTitle("+,- 키로 폰트 크기 조절"); // 제목 지정
19+
setLayout(new FlowLayout());
20+
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
21+
// 닫기 버튼을 눌렀을 시 화면 닫기
22+
23+
label= new JLabel("Love Java");
24+
label.setSize(200,50);
25+
label.setFont(new Font("Arial",Font.PLAIN,10));
26+
// Arial 폰트로 10픽셀 크기
27+
28+
label.addKeyListener(new MyKeyAdapter());
29+
// Jabel 컴포넌트 생성 후 KeyListener를 단다.
30+
31+
add(label);
32+
setSize(400,200);
33+
setVisible(true);
34+
label.requestFocus();
35+
// 컨텐트팬이 키 입력을 받을 수 있도록 포커스 강제 지정
36+
37+
}
38+
public static void main(String[] args) {
39+
// TODO Auto-generated method stub
40+
new Chapter10_5();
41+
42+
}
43+
44+
class MyKeyAdapter extends KeyAdapter{
45+
public void keyPressed(KeyEvent e) {
46+
Font f = label.getFont();
47+
int size = f.getSize(); // label의 font size 구하기
48+
49+
switch(e.getKeyCode()) {
50+
case 45: // -키 눌렀을 경우
51+
if(size>5) { // 5보다 클때만
52+
label.setFont(new Font("Arial", Font.PLAIN,size-5));
53+
}
54+
break;
55+
case 61: // +나=키 놀렀을 경우
56+
label.setFont(new Font("Arial", Font.PLAIN,size+5));
57+
break;
58+
}
59+
}
60+
}
61+
}
+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package Chapter10;
2+
3+
import java.awt.FlowLayout;
4+
import java.awt.Font;
5+
import java.awt.event.KeyAdapter;
6+
import java.awt.event.KeyEvent;
7+
import java.awt.event.MouseAdapter;
8+
import java.awt.event.MouseEvent;
9+
10+
import javax.swing.JFrame;
11+
import javax.swing.JLabel;
12+
13+
//클릭 연습용 스윙 응용프로그램을 작성하라.
14+
//JLabel을 이용하여 문자열이 "C"인 레이블을 하나만들고 초기 위치를 (100,100)으로 하라.
15+
//문자열을 클릭할 때마다 레이블은 프레임 내의 랜덤한 위치로 움직인다.
16+
public class Chapter10_6 extends JFrame{
17+
JLabel label;
18+
Chapter10_6(){
19+
setTitle("클릭 연습용 응용프로그램"); // 제목 지정
20+
setLayout(null);
21+
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
22+
// 닫기 버튼을 눌렀을 시 화면 닫기
23+
24+
label= new JLabel("Love Java");
25+
label.setSize(100,50);
26+
label.setLocation(100,100);
27+
label.addMouseListener(new MyMouseAdapter());
28+
// Jabel 컴포넌트 생성 후 MouseListener를 단다.
29+
30+
add(label);
31+
setSize(500,500);
32+
setVisible(true);
33+
label.requestFocus();
34+
// 컨텐트팬이 키 입력을 받을 수 있도록 포커스 강제 지정
35+
36+
}
37+
public static void main(String[] args) {
38+
// TODO Auto-generated method stub
39+
new Chapter10_6();
40+
}
41+
42+
class MyMouseAdapter extends MouseAdapter{
43+
int x,y;
44+
public void mousePressed(MouseEvent e) {
45+
x = (int)(Math.random()*400); // 여백을 조금 남기기 위해 400으로 지정
46+
y = (int)(Math.random()*400); // 여백을 조금 남기기 위해 400으로 지정
47+
label.setLocation(x,y);
48+
}
49+
}
50+
}

0 commit comments

Comments
 (0)