본문 바로가기
IT/자바

이클립스 단축키 BorderLayout 외 몇가지

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

현충일 전날 쓰는 복습 내용이다


뭐 어울리지 않는 이야기이긴 하지만

내일은 그냥 노는날이 아닌

국토방위를 위해 힘써준 이들을

생각하는 날이니 적어도 1분이라도

그들에게 감사함의 시간을 갖도록 하자


물론, 태극기 게양도 잊어선 안될것이다


1분 정도는 그분들을 위해 사용하고

나머지 23시간 59분은

자바 복습을 하는데 써보자


왠지 후자가 훨씬더 나랑 어울리지는

않지만 그렇게 하도록 해보자


이클립스를 처음 사용하고 난뒤에

첫 복습이다


간단하지만 중요한 단축키를 살펴보고

BorderLayout과 나머지 몇개를 

더 보도록 하자


package kr.ac.green;

import java.util.Scanner;
// ctrl + shift + f : 자동 들여쓰기
public class Some {
	private String name;
	private boolean empty;
	private int num;
	// ctrl + shift + o : import
	private Scanner scan;

	// alt + shift + s -> o : 멤버변수 초기화 생성자
	public Some(String name, boolean empty, int num) {
		super();
		this.name = name;
		this.empty = empty;
		this.num = num;
	}

	// alt + shift + s -> r : getters/setters
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public boolean isEmpty() {
		return empty;
	}

	public void setEmpty(boolean empty) {
		this.empty = empty;
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	// alt + shift + s -> s : toString
	@Override
	public String toString() {
		return "Some [name=" + name + ", empty=" + empty + ", num=" + num + "]";
	}

}


소개하는 이클립스 단축키는

모두 주석에 나와있으니 참고하기로 하자


바로 직전 포스팅에서도 말했듯

에디트 플러스에 비교하면

상당히 무거운 프로그램이다


그러나 여러가지 편리한점 때문에

국내에서 가장 많이 쓰는 툴이라고 들었다


해외에서는 다르다고 얼핏 

들었던 기억이 나는데 

정확히 어딘지는 모르겠다


에디트플러스에서 직접 다 코딩하던

getter setter 생성자 toString 등을

이클립스에서는 단축키만으로도

가능하니 주석에 나와있는 것들을

꼭 머릿속에 담아두길 바란다


package kr.ac.green;
import org.ac.green.Some;
// ctrl + s : save -> 컴파일
// ctrl + f11 : 실행
public class Test { 
//	ctrl + m : 창 최대화
	public static void main(String[] args) {
//		ctrl + space
		System.out.println("Hello Eclipse");
		Some s = new Some();
		s.todo();
	}
}


두번째 단축키 모음이다

이것 또한 알아두면

툴을 이용하는데에 

아주 편리하니 기억하자


그리고 package라고 하는 부분에서는

보통 자기 회사 도메인을 사용하는

경우가 많다고 배웠었다


물론, 우리가 알고 있는것과는

반대로 쳐야 할것이다


이부분도 알아두면 도움이 될것이다


package kr.ac.green;

import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;

public class JFrameEx1 extends JFrame {
	// ctrl + / : 주석
	// ctrl + d : 라인삭제
	public JFrameEx1() {
		setTitle("LayoutEx");
		setSize(400, 400);
		setLocation(700, 0);
		
		/*
		 * 일반 Component는 base container에 부착되어야 가시성을 가질 수 있다.
		 * 또한, 부착된 container의 가시성에 의존한다.
		 */
		JButton btn1 = new JButton("이거슨 버튼");
		
		// 부착
//		getContentPane().add(btn1);
		add(btn1);
		
		
		JButton btn2 = new JButton("이거슨 두번째 버튼");
		add(btn2);		
		
		/*
		private ImageIcon getImageIcon(String fileName) {
			Toolkit kit = Toolkit.getDefaultToolkit();
			Image img = kit.getImage(fileName);
			ImageIcon icon = new ImageIcon(img);
			return icon;
		}
		 */
		JButton btn3 = new JButton(getImageIcon("girl.png"));
		btn3.setText("이거슨 여자");
		
		btn3.setRolloverIcon(getImageIcon("girl2.png"));
		
		btn3.setPressedIcon(getImageIcon("girl3.png"));
		
		// 글꼴, 스타일, 크기
		Font font = new Font(Font.DIALOG, Font.ITALIC, 30);
		btn3.setFont(font);
		
		// 글자색
		btn3.setForeground(Color.RED);
		
		// 그림 기준으로 글자위치 조절
		btn3.setHorizontalTextPosition(JButton.CENTER);
		btn3.setVerticalTextPosition(JButton.BOTTOM);
		add(btn3);
		
//		창최대화
//		setExtendedState(MAXIMIZED_BOTH);
		
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}
	private ImageIcon getImageIcon(String fileName) {
		Toolkit kit = Toolkit.getDefaultToolkit();
		Image img = kit.getImage(fileName);
		ImageIcon icon = new ImageIcon(img);
		return icon;
	}
	public static void main(String[] args) {
		new JFrameEx1();
	}
}


세번째 예제는 버튼에 대한것들이다


자바로 만든 프로그램이나

나중에 배웠던 사이트들에

버튼이 없을수가 없다


대개 그것을 누르면서 

어떤 이벤트가 일어나게 하기

때문이다


지금은 버튼에 대해서만 언급하지만

나중에는 텍스트창이나 라디오버튼 등

다양하게 복습할 예정이니 

지금은 위의 예제에만 집중하도록 하자


package kr.ac.green;

import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
/*
 * - BorderLayout
 * 1. 5개의 영역으로 분할해서 배치한다.
 * 2. 각 영역당 1개의 component만 보인다.
 * 3. 각 영역에 배치된 Component는 해당 영역을 꽉채우는 크기로 조절된다.
 * 4. Container의 크기변화에 따라 영향을 받는 영역이 상이 하다.
 * 		a. 상, 하 : West, Center, East
 * 		b. 좌, 우 : North, South, Center 
 */
public class JFrameEx2 extends JFrame {
	
	private JButton btnNorth;
	private JButton btnCenter;
	private JButton btnWest;
	private JButton btnEast;
	private JButton btnSouth;
	
	
	public JFrameEx2() {
		init();
		setDisplay();
		showFrame();
	}
	// Component 초기화
	private void init() {
		btnNorth = new JButton("North");
		btnCenter = new JButton("Center");
		btnWest = new JButton("West");
		btnEast = new JButton("East");
		btnSouth = new JButton("South");
	}
	// 배치
	private void setDisplay() {
		add(btnNorth, BorderLayout.NORTH);
		add(btnCenter, BorderLayout.CENTER);
		add(btnWest, BorderLayout.WEST);
		add(btnEast, BorderLayout.EAST);
		add(btnSouth, BorderLayout.SOUTH);
	}
	// 프레임 설정(크기, 종료, 위치, 가시성 등)
	private void showFrame() {
		setTitle("BorderLayout");
		setSize(400, 300);
		setLocation(800, 0);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new JFrameEx2();
	}
}


BorderLayout은 배치에 관련있다고 생각하자


컴포넌트를 배치하는데 있어서

이 영역에 대한 이해도가 떨어지면

수월하게 할수가 없을것이다


지금은 BorderLayout 이야기만 하지만

내일이나 모레 정도 복습할 

나머지 두개 역시 제대로 알아두어야

사용하는데 큰 불편함이 없을것이다


정확하게 이해하지 않고 

막연히 사용하게 되었을 때에


자신이 구상했던거랑은 전혀 

다른 기괴한 모습으로 결과창이 뜰수 있다


주석만으로 잘 이해가 안된다고 한다면

코드를 직접 쳐보고 영역도 서로 바꿔가면서

실험해보길 바란다 


오늘은 여기까지 바이다

반응형

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

연습문제 풀이  (0) 2017.06.08
FlowLayout GridLayout 그리고 ComplexLayout  (0) 2017.06.07
JFrame 세번째  (0) 2017.06.04
StringBuffer와 JFrame 나머지 예제들  (0) 2017.06.02
JFrame 예제 4개  (0) 2017.05.31

댓글