Java 창 띄우기 - Java chang ttuiugi

package jTest; import javax.swing.*; //JTable import javax.swing.border.TitledBorder; import java.awt.*; public class BookCustomer extends JPanel { // 고객의 정보를 저장할 변수선언 JTextField txtCbun, txtCirum, txtCjunhwa, txtCjuso, txtCdaesu; JTextArea taCmemo;// 메모 (대여한 책의 정보) // 버튼 생성 신규 확인 수정 삭제 검색 옵션 종료 JButton btnInsert, btnOk, btnUpdate, btnDel, btnFind, btnOption, btnClose; // << < > >> JButton btnF, btnP, btnN, btnL; JLabel lblRec; // 전체 레코드 수 중에서 현재 보고 있는 레코드의 정보 // 생성자 public BookCustomer() { design(); } //------------------------------------화면 디자인 시작------------------------------------ // 고객정보 대화상자의 화면 디자인을 해주는 메서드 public void design() { this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); // 고객정보 패널 JPanel customerPn = new JPanel(new GridLayout(4, 1)); // import java.awt.*; -> 해야 GridLayout(4,1) 에러가 없어짐 customerPn.setBorder( new TitledBorder(new TitledBorder("고객 정보"), "", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.LEFT)); JPanel cPn1 = new JPanel(new FlowLayout(FlowLayout.LEFT)); JPanel cPn2 = new JPanel(new FlowLayout(FlowLayout.LEFT)); JPanel cPn3 = new JPanel(new FlowLayout(FlowLayout.LEFT)); JPanel cPn4 = new JPanel(new FlowLayout(FlowLayout.LEFT)); txtCbun = new JTextField("", 5); txtCirum = new JTextField("", 10); txtCjunhwa = new JTextField("", 15); txtCjuso = new JTextField("", 28); txtCdaesu = new JTextField("", 5); taCmemo = new JTextArea(2, 28); JScrollPane scroll = new JScrollPane(taCmemo); // 메모란에 스크롤 기능 taCmemo.setBackground(Color.lightGray);// 전체 배경 색깔(회색) // 신규, 수정하기전까지는 편집모드는 비활성화된 상태 txtCbun.setEditable(false);// ~setEditable(true) -> 활성화(커서입력 가능) txtCirum.setEditable(false); txtCjunhwa.setEditable(false); txtCjuso.setEditable(false); txtCdaesu.setEditable(false); taCmemo.setEditable(false); btnInsert = new JButton("신규"); btnOk = new JButton("확인"); btnUpdate = new JButton("수정"); btnDel = new JButton("삭제"); btnFind = new JButton("검색"); btnOption = new JButton("옵션"); btnClose = new JButton("닫기"); btnF = new JButton(" <<= "); btnP = new JButton(" <= "); btnN = new JButton(" => "); btnL = new JButton(" =>> "); lblRec = new JLabel(" 0 / 0 ", JLabel.CENTER); cPn1.add(new JLabel("번호 :")); cPn1.add(txtCbun); cPn1.add(new JLabel(" 이름 :")); cPn1.add(txtCirum); cPn2.add(new JLabel("전화 :")); cPn2.add(txtCjunhwa); cPn2.add(new JLabel(" 대여횟수 :")); cPn2.add(txtCdaesu); cPn3.add(new JLabel("주소 :")); cPn3.add(txtCjuso); cPn4.add(new JLabel("메모 :")); cPn4.add(scroll); customerPn.add(cPn1); customerPn.add(cPn2); customerPn.add(cPn3); customerPn.add(cPn4); this.add(customerPn); btnOk.setEnabled(false);// 확인버튼은 신규버튼을 누루기전까지는 비활성화 // 레코드 이동 패널======================== JPanel movePn = new JPanel(); movePn.setBorder(new TitledBorder(new TitledBorder("레코드 이동"), "", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.LEFT)); movePn.add(btnF); movePn.add(btnP); movePn.add(lblRec); movePn.add(btnN); movePn.add(btnL); this.add(movePn); // 명령 버튼 패널======================== JPanel bottomPn1 = new JPanel(); bottomPn1.setBorder(BorderFactory.createEmptyBorder(20, 0, 0, 0)); bottomPn1.add(btnInsert); bottomPn1.add(btnOk); JLabel lbl1 = new JLabel(" "); bottomPn1.add(lbl1); bottomPn1.add(btnUpdate); bottomPn1.add(btnDel); JPanel bottomPn2 = new JPanel(); bottomPn2.add(btnFind); bottomPn2.add(btnOption); JLabel lbl2 = new JLabel(" "); bottomPn2.add(lbl2); bottomPn2.add(btnClose); this.add(bottomPn1); this.add(bottomPn2); this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); } //------------------------------------화면 디자인 끝------------------------------------ public static void main(String[] args) { // ---------------- 화면 (창) ----------------// BookCustomer bookCustomer = new BookCustomer(); JFrame frame = new JFrame("고객 창"); frame.getContentPane().add(bookCustomer);// JFrame+JPanel(화면디자인) frame.setBounds(200, 300, 430, 450);// x,y,w,h frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// X버튼 클릭시 종료 }// main 끝 // ---------------- 화면 (끝) ----------------// }

오늘의 결과물

Java 창 띄우기 - Java chang ttuiugi

자바에서 GUI를 개발하기 위해서는 JFrame 클래스를 상속받아야 한다.

그러면 JFrame에 있는 메소드들을 사용할 수 있다.

import javax.swing.JFrame;

class 클래스명 extends JFrame

창을 띄우기 위해서는 상속만 받아서는 안된다.

생성자를 만들어서 그 안에 사이즈를 정해주고, 보여줘야한다.

필수적으로 있어야 하는 메소드들은 다음과 같다.

setSize(int width, int height);
setVisible(boolean b);

setSize는 말그대로 창의 사이즈를 정해주는 메소드이다. 첫 번째 인자는 너비, 두 번째 인자는 높이이다.

setVisible은 이 창을 보이게 할지, 안 보이게 할지 정하는 메소드이다. true를 하면 보이게 한다.

일단 창을 띄우는 전체 코드는 다음과 같다.

import javax.swing.JFrame;

public class 창띄우기 extends JFrame {
	public static void main(String[] args) {
		new 창띄우기();
	}

	public 창띄우기() {
		super("창 띄우기 예제");
		this.setSize(500, 500);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
	}
}

JFrame에서 super 키워드는 제목을 정하게 해주는 참조 변수이다. setTitle과 같은 기능이다.

setLocationRelativeTo(null)은 이 창을 화면의 가운데에 띄우게 해주는 메소드이다. 이를 넣지 않으면 창은 맨 좌측 위쪽에 뜰 것이다.

setDefaultCloseOperation 메소드는 한 개의 인자만을 받는데 종류는 4개이다.

1. DO_NOTHING_ON_CLOSE

2. HIDE_ON_CLOSE

3. DISPOSE_ON_CLOSE

4. EXIT_ON_CLOSE

1번은 창의 x버튼을 누를 시에 아무것도 실시가 되지 않게 해준다.

2번은 창의 x버튼을 누를 시에 그 창을 숨기게 해준다. 즉 x버튼을 눌러도 꺼지지 않는다.

3번은 x버튼을 누른 창을 숨겨서 파기시킨다. (해당 JFrame 하나만 닫힌다.)

4번은 애플리케이션을 종료한다. (모든 JFrame이 닫히고 애플리케이션을 종료한다.)

지금 설명드린 메소드들은 창을 띄우기 위한 필수적인 메소드가 아닌 부속적인 메소드들이다.

오늘은 창을 띄우는 것만 했지만 다음에는 컴포넌트 레이아웃이라는 것을 다룰 것이다.

미리보기

Java 창 띄우기 - Java chang ttuiugi