본문 바로가기
IT/자바

JFrame 세번째

by 독서실총무J 2017. 6. 4.
반응형

일요일이다

당신은 다가올 헬요일 때문에

엄청 불안에 떨겠지만 

난 항상 쉬는날이라서 그닥

감흥이 없다


그래도 화요일에 빨간날이라서

직장인들은 평소 때보다는

덜 긴장되리라 예상한다


어째 생각해보면 이번 해에는

쉬는날이 진짜 많은것 같다


특히 이름바 황금연휴라고 

불리는, 아주 긴 연휴가

두번이나 있다는게 

사람들을 행복하게 만드는듯 싶다


요번 포스팅에서는 JFrame에 

대해서 또 언급하려고 한다


내가 그러고 싶어서 하는게 아니라

배웠던 과정이 그렇다


어쨋든 오늘도 들여다 보기로 하자


import javax.swing.*;
class JFrameEx1 {
	public static void main(String[] args) {
		JFrame f = new JFrame("여기는센터");
		
		f.setSize(500, 400);
		
		// 반드시 사이즈를 설정한 후 사용할것!
		f.setLocationRelativeTo(null);	
		
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setVisible(true);
	}
}


저번에 다 배웠던 것들이다

딱히 설명할 것도 없으며 

아주 기본이 되는 쉬운 내용이니

모르면 실행해보자


UI확인만 하여도 

어떤 문장이 어떻게 굴러가는지

눈에 훤히 보일것이니 말이다


더불어 또 적자니 귀찮다

이해해주길 바란다


import java.awt.Color;
import java.awt.Frame;
import javax.swing.*;

class MyFrame extends JFrame {
	public MyFrame() {
		setTitle("MyFrame");		
		setSize(400, 400);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
	
		//Color background = new Color(0xFFA7A7);
		//getContentPane().setBackground(background);
		
		getContentPane().setBackground(Color.YELLOW);

		setVisible(true);
	}
}

class JFrameEx2 {
	public static void main(String[] args) {
		new MyFrame();
	}
}


여기서 보면 ContentPane에 대한

언급이 나와 있다 


JFrame은 여러 겹으로 구성되어

있다고 생각해보자


한마디로 양파처럼 까도까도 그안에

다른 구성인자로 되어있다는거다


그리고 그 겹마다 담당하는 

기능이 다를것이란 거다


사용자 눈에 보이는 부분과 

메뉴 바에 대한 부분 등

해당 되는 영역이 따로 있다


어떤것들이 있는지는

구글에 검색해보자


import java.awt.*;
import javax.swing.*;
class MyFrame2 extends JFrame {
	public static final int MAX_DELAY = 1000;
	public static final int MIN_DELAY = 0;
	public static final int TERM_OF_DELAY = 10;
	private int delay = 50;
	public MyFrame2() {
		super("Moving Window");
		setSize(100, 100);
		setLocation(0, 0);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}

	public void moveTo(int x) {
		int currentX = getLocation().x;
		int currentY = getLocation().y;	
		
		int distance = currentX - x;
		if(distance < 0) {
			// 절대값구하기 : Math.abs(...)
			for(int i=0; i= MAX_DELAY) {
			delay = MAX_DELAY;
		}
	}
}
class JFrameEx3 {
	public static void main(String[] args) {
		MyFrame2 f = new MyFrame2();
		f.speedUp();
		// f.speedUp();
		f.moveTo(200);
		f.speedDown();
		f.speedDown();
		f.speedDown();
		f.moveTo(100);
	}
}


moveTo라는 메소드를 설정해주므로서

창이 이동하는걸 보여주는 코드이다


창의 위치를 정확히 알아내야하며

딜레이를 조절하면서 이동하는

속도를 내맘대로 할수 있다


크게 어렵지 않다

이해하기도 쉽고 말이다


모르겠으면 직접 쳐보길 바란다


import java.awt.*;
import java.util.*;
import javax.swing.*;
class MyFrame4 extends JFrame {
	public MyFrame4() {
		setSize(100, 100);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}

	public void catchMeIfYouCan() {
		Random r = new Random();
		Toolkit kit = Toolkit.getDefaultToolkit();
		Dimension screenSize = kit.getScreenSize();

		for(int i=0; i<10; i++) {
			try {
				int width = r.nextInt(300) + 1;
				int height = r.nextInt(300) + 1;
				setSize(width, height);
				// 화면 안에서만 놀아라~
				setLocation(
					r.nextInt(screenSize.width - width),	
					r.nextInt(screenSize.height - height)
				);
				getContentPane().setBackground(
					new Color(
						r.nextInt(256),	// R
						r.nextInt(256),	// G
						r.nextInt(256)	// B
					)	
				);
				Thread.sleep(r.nextInt(1000));
			} catch(Exception e) {}
			System.out.println("You Loose!!!");
		}
	}
}
class JFrameEx4 {
	public static void main(String[] args) {
		MyFrame4 f = new MyFrame4();
		f.catchMeIfYouCan();
	}
}


랜덤함수를 이용하여 창을 

잡는 그런 게임이다


재미는 없다만 코드를 보자


랜덤하게 색과 사이즈 위치를

바꿀수 있어야 하며 ,

해당 창이 모니터 전체 범위를

이탈하지 않게 설정해주는것이 

중요할 것이다 


그리고 , Thread부분이 또 나왔는데

이것은 향후에 복습 거리로 나오니

그때 같이 보기로 하자


아마 좀 많이 후에가 될것 같지만 말이다


오늘 세번째 내용까지 학원에서

EditPlus로 배웠었던 기억이 난다


그다음 시간 부터는 이클립스를

통해 코딩을 했었는데,

확실히 이클립스가 편하긴 하더라


툴이 조금 무겁고 느린것만 제외하면

더 좋았는데, 블로그에서는 그냥

지금처럼 코드 예제를 통해서 

복습할 생각이니 


뭐, 크게 달라질것은 없을것 같다


자주 오는 사람도 없을테지만

나혼자라도 마음을 다스리는 의미로

언급해 보았으니 처음 왔으면

신경 끄고 즐겨찾기 하길 바란다


남은 주말 잘 보내고

헬요일에 고생하길 바란다

반응형

'IT > 자바' 카테고리의 다른 글

FlowLayout GridLayout 그리고 ComplexLayout  (0) 2017.06.07
이클립스 단축키 BorderLayout 외 몇가지  (0) 2017.06.05
StringBuffer와 JFrame 나머지 예제들  (0) 2017.06.02
JFrame 예제 4개  (0) 2017.05.31
자바 과제 복습  (0) 2017.05.30

댓글