본문 바로가기
IT/자바

자바 border 외 한가지 실습

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

날씨가 너무나도 좋다

약간 쌀쌀하면서도 

기분 좋아지게 해준다


오늘 12시간 넘게 잤다

확실히 피곤함이 사라졌다


이틀전에 뭘좀 한다고

밤을 샜더니 기절한듯 잤다


나이 앞에 숫자가 3으로 

바뀌니까 체력이 확 떨어진듯 싶다


4자로 바뀌어버리면

거의 식물인간이 될지도 모르겠다


그렇게 되기전에 

오늘도 복습을 해보자


이번편은 그냥 간단한

실습 두가지를 볼것이다


import java.awt.*;

import javax.swing.*;
import javax.swing.border.*;

public class BorderEx extends JFrame {
	private JPanel pnlMain;
	private Font font;
	private void addLabel(Border border, String text) {		
		JLabel lbl = new JLabel(text, JLabel.CENTER);
		lbl.setFont(font);
		lbl.setBorder(border);
		pnlMain.add(lbl);
	}
	
	public BorderEx() {
		font = new Font(Font.DIALOG, Font.BOLD, 20);
		pnlMain = new JPanel(new GridLayout(0, 1, 0, 10));
		
		Insets insets = new Insets(10, 10, 10, 10);
		pnlMain.setBorder(
			// 시계반대방향(위, 왼쪽, 아래, 오른쪽)
			new EmptyBorder(insets)
		);		
		
		addLabel(null, "Default");
		
		TitledBorder tBorder = new TitledBorder("this is a title");
		addLabel(tBorder, "TitledBorder");
		
		tBorder = new TitledBorder("title");
		tBorder.setTitleJustification(TitledBorder.RIGHT);
		addLabel(tBorder, "RIGHT");
		
		tBorder = new TitledBorder("title");
		tBorder.setTitlePosition(TitledBorder.ABOVE_BOTTOM);
		addLabel(tBorder, "ABOVE_BOTTOM");
		
		tBorder = new TitledBorder("title");
		tBorder.setTitlePosition(TitledBorder.ABOVE_TOP);
		addLabel(tBorder, "ABOVE_TOP");
		
		tBorder = new TitledBorder("title");
		tBorder.setTitlePosition(TitledBorder.BELOW_BOTTOM);
		addLabel(tBorder, "BELOW_BOTTOM");
		
		tBorder = new TitledBorder(
			new LineBorder(Color.BLACK, 1),
			"TitledBorder + LineBorder"
		);
		addLabel(tBorder, "ComplexTitledBorder");
		
		
		tBorder = new TitledBorder("Red Title");
		tBorder.setTitleColor(Color.RED);
		tBorder.setTitleFont(new Font(Font.SERIF, Font.ITALIC, 15));
		addLabel(tBorder, "TitledBorder");
		
		LineBorder line = new LineBorder(Color.BLACK, 1);
		addLabel(line, "LineBorder");		
		
		EtchedBorder eBorder = new EtchedBorder(EtchedBorder.LOWERED);
		addLabel(eBorder, "EtchedBorder-LOWERED");
		
		eBorder = new EtchedBorder(EtchedBorder.RAISED);
		addLabel(eBorder, "EtchedBorder-RAISED");
		
		BevelBorder bBorder = new BevelBorder(BevelBorder.LOWERED);
		addLabel(bBorder, "BevelBorder-LOWERED");
		
		bBorder = new BevelBorder(BevelBorder.RAISED);
		addLabel(bBorder, "BevelBorder-RAISED");
		
		
		JScrollPane scroll = new JScrollPane(pnlMain);
		/*
		 * Policy
		 * 1. VERTICAL
		 * - ScrollPaneConstants.VERTICAL_SCROLLBARS_AS_NEEDED(default)
		 * - ScrollPaneConstants.VERTICAL_SCROLLBARS_ALWAYS
		 * - ScrollPaneConstants.VERTICAL_SCROLLBARS_NEVER
		 * 
		 * 2. HORIZONTAL
		 * - ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED(default)
		 * - ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS
		 * - ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER
		 */
		scroll.setVerticalScrollBarPolicy(
			ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED
		);
		scroll.setHorizontalScrollBarPolicy(
			ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS	
		);
		add(scroll, BorderLayout.CENTER);
		
		setTitle("BorderEx");
		setSize(400, 300);
		setLocation(300, 0);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}
	
	
	public static void main(String[] args) {
		new BorderEx();
	}
}


첫번째는 border에 대한 내용이다


이것을 이용하여 우리가 쓰고자

하는 컴포넌트 설정이 가능하다


스크롤을 넣고 싶다면 그렇게 할수 있다

외곽에 타이틀을 넣고 싶다면 

또 그렇게 할수 있다


실행을 해보면 알겠지만

위 코드에서 넣어준 내용대로

버튼이 쪼르르 나온다


코드의 문맥과

화면을 번갈아 보면서

어떻게 적용되었는지

살펴보면 금새 이해할수 있을것이다


스크롤을 넣었을때

좌우 혹은 상하

옵션도 주석으로

잘 설명 되어 있으니

참고하길 바란다


import java.awt.BorderLayout;

import javax.swing.*;

public class MyFrame1 extends JFrame {
	private JButton btnNorth;
	private JButton btnWest;
	private JButton btnEast;
	private JButton btnSouth;
	
	private JButton btnUp;
	private JButton btnLeft;
	private JButton btnRight;
	private JButton btnDown;
	
	private JButton btnToTop;
	private JButton btnToLeft;
	private JButton btnToRight;
	private JButton btnToBottom;
	
	private JButton btnO;
	
	public MyFrame1() {
		init();
		setDisplay();
		showFrame();
	}
	private void showFrame() {
		setTitle("Answer1");
		setSize(400,300);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}
	private void setDisplay() {
		JPanel pnlCenterCenter = new JPanel(new BorderLayout());
		pnlCenterCenter.add(btnToTop, BorderLayout.NORTH);
		pnlCenterCenter.add(btnToBottom, BorderLayout.SOUTH);
		pnlCenterCenter.add(btnToLeft, BorderLayout.WEST);
		pnlCenterCenter.add(btnToRight, BorderLayout.EAST);
		pnlCenterCenter.add(btnO, BorderLayout.CENTER);
		
		JPanel pnlCenter = new JPanel(new BorderLayout());
		pnlCenter.add(btnLeft, BorderLayout.WEST);
		pnlCenter.add(btnUp, BorderLayout.NORTH);
		pnlCenter.add(btnRight, BorderLayout.EAST);
		pnlCenter.add(btnDown, BorderLayout.SOUTH);
		pnlCenter.add(pnlCenterCenter, BorderLayout.CENTER);
		
		add(btnNorth, BorderLayout.NORTH);
		add(btnWest, BorderLayout.WEST);
		add(btnEast, BorderLayout.EAST);
		add(btnSouth, BorderLayout.SOUTH);
		add(pnlCenter, BorderLayout.CENTER);
	}
	private void init() {
		btnNorth = new JButton("North");
		btnWest = new JButton("West");
		btnEast = new JButton("East");
		btnSouth = new JButton("South");
		
		btnUp = new JButton("Up");
		btnLeft = new JButton("Left");
		btnRight = new JButton("Right");
		btnDown = new JButton("Down");
		
		btnToTop = new JButton("▲");
		btnToLeft = new JButton("◀");
		btnToRight = new JButton("▶");
		btnToBottom = new JButton("▼");
		
		btnO = new JButton("O");		
	}
	public static void main(String[] args) {
		new MyFrame1();
	}
}


다음은 이전에 배웠던 

BorderLayout에 대한 코드이다


잘 기억은 안나지만

수업 중에 누가 물어봐서

같이 실습을 해보았던것 같다


직접 따라쳐 보거나

실행한후 나오는 결과물을


직접 코딩해서 

똑같이 만드는 연습을

하면 실력 향상에 

많은 도움이 될것이다


오늘은 border 외

한가지 실습에

대해서 복습했다


아마 내일 포스팅을

또할수 있을것 같은데


ActionListener에 대해서

복습할것 같다

반응형

댓글