티스토리 뷰
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
링크
TAG
- 고득점 키트
- python
- Django
- 정렬
- jQuery
- append
- Case When
- html
- javascript
- baekjoon
- 덱
- web
- 장고
- jsp
- R
- 스프링
- 자바
- brute force
- bootstrap
- 문자열
- 자바스크립트
- 백준
- Oracle
- 프로그래머스
- 단계별로풀어보기
- 큐
- 파이썬
- 브루트 포스
- Java
- CSS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함