티스토리 뷰

development/Java

[Java] JFrame #1

Happyoon ~ 2021. 11. 16. 18:27
728x90
반응형

자바의 프레임에 대해 살펴보자.

 


1. JFrame 객체 생성 및 기초 조건 설정

 

1) 클래스 생성 및 JFrame 상속 

package test.frame;
import javax.swing.JFrame;
public class MyFrame extends JFrame{
	//run했을 때 실행 순서가 시작되는 main 메소드
	public static void main(String[] args) {
		
	}
}

 

2) 프레임 객체 생성

MyFrame f = new MyFrame();

 

3) 프레임 크기 설정

f.setSize(800,500);

 

4) 프레임 위치 설정

f.setLocation(100,100);

 

5) setVIsible 설정

f.setVisible(true);

 

6) 프로세스 종료 조건 설정

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

창을 닫으면 프로세스가 종료되도록 설정 

 

 


전체 코드

MyFrame.java

package test.frame;

import javax.swing.JFrame;

public class MyFrame extends JFrame{
	
	
	//run했을 때 실행 순서가 시작되는 main 메소드
	public static void main(String[] args) {
		MyFrame f = new MyFrame(); 
		f.setSize(800,500);
		f.setLocation(100,100);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

2. 레이아웃 설정

 

- FlowLayout

 

- 왼쪽에서 우측으로 배치

- 상하좌우 아이템 간 5px의 간격

- 우측에 더 이상 공간이 없다면 아래에 배치

- FlowLayout.(Left/Right/Center)을 통해서 정렬 위치 설정 

 

 

FlowLayout으로 레이아웃 설정하기 (왼쪽 맞춤)

setLayout(new FlowLayout(FlowLayout.LEFT));

 

 

- GridLayout

 

 

//FlowLayout 객체 전달하기
setLayout(new BorderLayout());

- BorderLayout

 

BorderLayout에 버튼 추가하기 예제

//FlowLayout 객체 전달하기
setLayout(new BorderLayout());
//버튼을 만들어서 
JButton btn1=new JButton("버튼1");
JButton btn2=new JButton("버튼2");
JButton btn3=new JButton("버튼3");
JButton btn4=new JButton("버튼4");
      
//프레임에 추가하기 
add(btn1, BorderLayout.NORTH);
add(btn2, BorderLayout.WEST);
add(btn3, BorderLayout.EAST);
add(btn4, BorderLayout.SOUTH);

 


3. JList와 DefaultListModel

 

1) JList와 DefaultListModel 객체 생성하기

//목록을 출력할 UI
JList jList = new JList<>();
//JList에 출력할 데이터를 가지고 있는 모델 객체
DefaultListModel<String> model = new DefaultListModel<>();

 

2) JList에 모델 연결하기 

jList.setModel(model);

 

3) 모델에 요소 추가/삭제하기

model.addElement(요소);
model.remove(인덱스);

 

4) jList에서 선택된 인덱스 가져오기

int index = jList.getSelectedindex();

4. JTable와 DefaultTableModel

table=new JTable();
      //테이블의 칼럼명을 String[] 로 준비하기
      String[] colNames= {"번호", "이름", "주소"};
      //테이블에 출력할 데이터를 가지고 있는 DefaultTableModel
      model=new DefaultTableModel(colNames, 0) {
    	  //인자로 전달되는 행(row), 열(column) 수정 가능 여부를 리턴하는 메소드
    	  @Override
    	  public boolean isCellEditable(int row, int column) {
    		  //0번 칼럼만 수정 불가능하도록 false를 리턴
    		  if(column ==0) return false;
    		  //나머지는 모두 수정 가능하도록 true를 리턴 
    		  else return true;
    	  }
    	  
      };
      //모델을 테이블에 연결
      table.setModel(model);

 

isCellEditable로 수정 불가한 칼럼을 설정했다.


4. 스크롤 패널 

 

1) 스크롤 패널에 jList 추가

JScrollPane sc = new JScrollPane(jList,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

 

2) 프레임에 스크롤 패널 추가하기

add(sc, BorderLayout.CENTER);

5. 버튼 만들고 추가하기

JButton btn1 = new JButton("버튼1");
add(btn1);

 


6. JTextField로 문자열 입력칸 생성하기 

JTextField InputMsg = new JTextField(10);

7. 패널 사용하기

 

1) 패널에 UI 추가

JPanel panel = new JPanel();
panel.add(sendBtn);
add(panel);

 

2) 패널 째로 프레임 상단에 추가하기 

add(panel, BorderLayout.NORTH);

8. ActionListener

 

- 익명클래스를 사용하여 ActionListener 인터페이스 type의 참조값 얻어내는 법

 ActionListener Listener = new ActionListener() {
		
		@Override
		public void actionPerformed(ActionEvent e) {
			System.out.println("전송합니다.");
			
		}
	};
    
    sendBtn.addActionListener(Listener);

 

 

 

- 익명클래스를 사용하여 참조값을 얻지 않고 버튼에 ActionListener 등록하는 법

deleteBtn.addActionListener(new ActionListener() {
		
		@Override
		public void actionPerformed(ActionEvent e) {
			System.out.println("삭제합니다.");
			
		}
      });

 

 

- lambda 식을 이용하여 버튼에 ActionListener 등록하는 법

updateBtn.addActionListener((e)->{
    	  System.out.println("수정합니다.");
      });

 

- 클래스에 ActionListener 구현하여 ActionListener 사용하는 법

public class MyFrame3 extends JFrame implements ActionListener{
	btn1.addActionListener(this);
}

 


9. KeyListnener

키보드의 액션에 대한 리스너

 inputName.addKeyListener(this);

10. ActionCommand

 

1) 커맨드 설정하기

sendBtn.setActionCommand("send");

 

2) 커맨드를 활용하여 분기하기 

public void actionPerformed(ActionEvent e) {
		String command = e.getActionCommand();
		if (command.equals("add")) {
			addAction();

		}

		if (command.equals("delete")) {
			deleteAction();

		}
	}

 


11. 알림창 띄우기

JOptionPane.showMessageDialog(this,msg);

예제는 다음 게시물에서 살펴보자.

반응형

'development > Java' 카테고리의 다른 글

[Java] 쓰레드 Thread  (0) 2021.11.16
[Java] JFrame #2 예제  (2) 2021.11.16
[Java] Java template 만들기  (0) 2021.11.13
[Java] JDBC #2 DAO  (0) 2021.11.13
[Java] JDBC #1 / DB 연결, SELECT, INSERT, DELETE, UPDATE, DTO  (1) 2021.11.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함