JFrame이란?
💡 한마디로 설명하자면 jframe은 java swing 클래스의 일부이며 구현되는 하나의 창이다.
스윙은 자바에서 그래픽 사용자 인터페이스를 구현하기 위하여 제공되는 클래스이다.
또한 버튼, 창, 표, 트리 등의 컴포넌트들을 이용할 수 있게 해주는 클래스 이다.
예) TestJFrame.java
Swing 예제 통해 알아가기!
버튼클릭이벤트 예제1
(Good Mornint->Good Evening)
Swing01.java
1) new → other → WindowBuilder->Swing Designer->Application Window

2) 해당 소스폴더의 패키지안에 Swing01.java 라는 이름의 JFrame파일을 생성한다.
Superclass → javax.swing.JFrame
3) 아래 같이 코드를 자동완성시켜준다. 이제 Design을 눌러주자.
package day04;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class Swing01 extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Swing01 frame = new Swing01();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Swing01() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
}
}
위에서 봤을 때 Runnable()과 run()이라는 메소드를 보았을때 대충 스레드의 사용과 비슷하단 감이 왔다.
또 전체적인 코드를 보았을 때 frame의 생성과
패널이 생성되었음을 알 수 있다.
우리는 패널위에 버튼과 같은 이벤트 도구를 사용하여 프로그램을 작성해볼것이다.
밑에 Design을 누르면 디자인을 개략적으로 볼 수 있다.
드래그 앤 드롭으로 컴포넌트를 이동시키는것 역시 가능하다.
4) 이클립스 WindewBuilder Design Tool 이용하기

디자인 툴? 이 제공된다.

작성예제) 버튼을 클릭하면 Good Morning 과 Good Evening 텍스트가 출력
각 컴포넌트들을 이용해서 만들어보자
Components에서 사용할 것들을 드래그앤 드롭하여 올려놓아보자

아래와 같이 프레임위에 패널이 자동형성되어있을 것이다.

panel을 클릭하면 왼쪽에 proper가 보이고, Layout 에 (absolute)로 설정해주자.

라벨을 클릭하여 Variable 과 text를 변경해주자. 마찬가지로 버튼도 변경해주자.
Variable은 자바코드에서 사용할 변수이다.

마우스 클릭이벤트를 줄때는 proper 옆에 이 아이콘을 클릭하여 clicked 을 두번 클릭!

클릭하면 addMouseListener(new MouseAdapter() { ……. }; 와 같은 소스가 추가된다.

버튼을 클릭하면 스위치식으로 바뀌는 형태로 만들어보려고한다.
Run 실행하기!

package day04;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class Swing01 extends JFrame {
// f 전역변수로 빼기
boolean f = true;
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Swing01 frame = new Swing01();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Swing01() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lbl = new JLabel("Good Morning");
lbl.setBounds(62, 54, 90, 43);
contentPane.add(lbl);
JButton btn = new JButton("Click");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// 프로그램이 동작할 코드 작성
if(f==true) {
lbl.setText("Good Evening");
f=false;
}else {
lbl.setText("Good Morning");
f=true;
}
}
});
btn.setBounds(180, 50, 105, 47);
contentPane.add(btn);
}
}
버튼클릭이벤트 예제2
(버튼을 눌러 숫자 증가시키기)
Swing02.java

package day04;
import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class Swing02 extends JFrame {
private JPanel contentPane;
JLabel lbl;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Swing02 frame = new Swing02();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Swing02() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
lbl = new JLabel("10000");
lbl.setBounds(77, 49, 57, 15);
contentPane.add(lbl);
JButton btn = new JButton("increase");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// String a = lbl.getText();
// int count= Integer.parseInt(a);
// count++;
// String ct = String.valueOf(count);
// lbl.setText(ct);
//
myclick();
}
});
btn.setBounds(171, 45, 97, 23);
contentPane.add(btn);
}
public void myclick() {
String a = lbl.getText();
int aa = Integer.parseInt(a);
aa++;
//숫자를 문자로바꾸기
//lbl.setText(aa + "");
lbl.setText(Integer.toString(aa));
}
}
예제. textField에 2~9사이의 숫자를 입력하여 구구단을 출력해보자.
버튼클릭이벤트 예제3
( textField에 2~9사이의 숫자를 입력하여 구구단을 출력해보기)
Swing03.java


package day04;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JTextArea;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
// 구구단 쌤코드
public class Swing04 extends JFrame {
private JPanel contentPane;
private JTextField tf;
//전역변수로 ta 빼기
JTextArea ta;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Swing04 frame = new Swing04();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Swing04() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lbl = new JLabel("출력단수");
lbl.setBounds(96, 38, 57, 15);
contentPane.add(lbl);
tf = new JTextField();
tf.setBounds(179, 35, 116, 21);
contentPane.add(tf);
tf.setColumns(10);
JButton btn = new JButton("출력하기");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
myclick();
}
});
btn.setBounds(96, 66, 199, 23);
contentPane.add(btn);
//전역변수로 빼놓았기때문에 JTextArea 타입을 빼기
ta = new JTextArea();
ta.setBounds(96, 99, 199, 152);
contentPane.add(ta);
}
public void myclick() {
String txt = "";
String dan = tf.getText();
int idan = Integer.parseInt(dan);
txt += idan +" * "+1+"="+(idan*1)+"\n";
txt += idan +" * "+2+"="+(idan*2)+"\n";
txt += idan +" * "+3+"="+(idan*3)+"\n";
txt += idan +" * "+4+"="+(idan*4)+"\n";
txt += idan +" * "+5+"="+(idan*5)+"\n";
txt += idan +" * "+6+"="+(idan*6)+"\n";
txt += idan +" * "+7+"="+(idan*7)+"\n";
txt += idan +" * "+8+"="+(idan*8)+"\n";
txt += idan +" * "+9+"="+(idan*9)+"\n";
ta.setText(txt);
}
}
'공부 기록노트 > java' 카테고리의 다른 글
[Java] android studio를 이용하여 별찍기 (0) | 2023.01.01 |
---|---|
[Java] android studio를 이용하여 로또복권당첨번호 생성하기 (0) | 2023.01.01 |
[Java]자바 스윙( Swing ) / WindowBuilder 개념 및 설치 방법 (0) | 2023.01.01 |
[Java] GUI 프로그래밍을 위한 AWT (0) | 2023.01.01 |
[조건문] if문과 switch문 (0) | 2022.10.02 |