JAVA
JAVA_GUI
개발자_미노
2020. 9. 3. 17:37
반응형
개념
출력 결과물 또는 입력하는 방식을 콘솔이 아닌 컴포넌트(윈도우 어플리케이션)에서 작성하는 것
종류
AWT / SWING / Java2D / JavaFX
LayoutManager
- 종류는 flow / border / grid / card / grid이 있다.
- setLayout(레이아웃 종류) 형식으로 지정한다.
- JDialog, JFrame, JWindow은 기본 값이 border로 지정된다.
- JApplet, JPanel은 기본 값이 flow로 지정된다.
FlowLayout → 왼쪽에서 부터 오른쪽으로 배치하는 레이아웃
BorderLayout → 동서남북으로 배치하는 레이아웃
GridLayout → 격자 형식으로 배치하는 레이아웃
Event Handling
예제
생성방식
public static void main(String[] args){
JFrame f = new JFrame();
f.setTitle("GUI");
f.setSize(400,100);
f.setVisible(true);
}
public class UrFrame extends JFrame{
UrFrame(){
setTitle("GUI");
setSize(400,100);
setVisible(true);
}
}
public static void main(String[] args){
new UrFrame();
}
public class Gui1 extends JFrame{
Gui1(){
setTitle("GUI");
setSize(400,100);
setVisible(true);
}
public static void main(String[] args){
new Gui1();
}
}
패널 추가 / 버튼 추가
public class Gui1 extends JFrame{
Gui1(){
setTitle("GUI");
JPanel p = new JPanel();
JLabel l = new JLabel("레이블");
JButton b = new JButton("버튼");
p.add(l);
p.add(b);// 버튼을 패널에 추가
add(p); // 패널을 프레임에 추가
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // x 버튼을 눌르면 종료
setSize(400,100);
pack(); // 사이즈에 맞게 조절
setVisible(true);
}
public static void main(String[] args){
new Gui1();
}
}
FlowLayout
public class Gui1 extends JFrame{
Gui1(){
setTitle("Flow Layout");
JPanel p = new JPanel(new FlowLayout());
p.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT) // 오 -> 왼
JButton b1 = new JButton("Buttion 1");
JButton b2 = new JButton("Btn 2");
JButton b3 = new JButton("B 3");
JButton b4 = new JButton("B4");
JButton b5 = new JButton("Buttion 55555");
p.add(b1);
p.add(b2);
p.add(b3);
p.add(b4);
p.add(b5);
add(p);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(250,120);
setVisible(true);
}
public static void main(String[] args){
new Gui1();
}
}
BorderLayout
public class Gui1 extends JFrame{
Gui1(){
setTitle("Border Layout");
setLayout(new BorderLayout());
JButton b1 = new JButton("Buttion 1");
JButton b2 = new JButton("Btn 2");
JButton b3 = new JButton("B 3");
JButton b4 = new JButton("B4");
JButton b5 = new JButton("Buttion 55555");
add("East",b1);
add("South",b2);
add("West",b3);
add("North",b4);
add(b5, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,300);
setVisible(true);
}
public static void main(String[] args){
new Gui1();
}
}
GridLayout
public class Gui1 extends JFrame{
Gui1(){
setTitle("Border Layout");
setLayout(new GridLayout(0,3));
JButton b1 = new JButton("Buttion 1");
JButton b2 = new JButton("Btn 2");
JButton b3 = new JButton("B 3");
JButton b4 = new JButton("B4");
JButton b5 = new JButton("Buttion 55555");
add(b1);
add(b2);
add(b3);
add(b4);
add(b5);
add(new JButton("마지막 버튼"));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,300);
setVisible(true);
}
public static void main(String[] args){
new Gui1();
}
}
Event Handling
ActionListener
public class Event1 extends JFrame{
Event1(){
setTitle("Event Handling");
// ActionListener al = ev -> System.out.println("람다");
// 람다식으로 간단하게 리스너 구현 가능
ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("버튼 클릭");
}
};
JButton btn = new JButton("클릭");
btn.addActionListener(al);
add(btn);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,300);
setVisible(true);
public static void main(String[] args)
{
new Event1();
}
}
Scrollbar
public class Event1 extends JFrame{
Event1(){
setTitle("Scrollbar Event Handling");
JLabel lbl = new JLabel("", JLabel.CENTER);
JScrollBar sb = new JScrollBar(JScrollBar.VERTICAL);
sb.setValues(50,1,0,100);
sb.addAdjustmentListener(ev -> {
int display = ev.getValue();
lbl.setText("현재 위치" + display);
});
add("North", lbl);
add(sb,BorderLayout.EAST);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,300);
setVisible(true);
public static void main(String[] args)
{
new Event1();
}
}
Text
class Event1 extends JFrame{
Event1(){
setTitle("Event Handling");
setLayout(new FlowLayout());
JTextField tf1 = new JTextField(10);
JTextField tf2 = new JTextField(10);
JLabel lbl = new JLabel();
JButton b1 = new JButton("Plus");
JButton b2 = new JButton("Minus");
ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
String s1 = tf1.getText();
String s2 = tf2.getText();
int a = Integer.parseInt(s1);
int b = Integer.parseInt(s2);
int result = 0;
if(ev.getSource().equals(b1)){
result = a + b;
}
else if(ev.getSource().equals(b2)){
result = a - b;
}
lbl.setText(String.valueOf(result));
}
};
b1.addActionListener(al);
b2.addActionListener(al);
add(tf1);add(tf2);add(lbl);add(b1);add(b2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,120);
setVisible(true);
}
public static void main(String[] args){
new Event1();
}
}
class Event1 extends JFrame implements ActionListener{
JTextField tf1,tf2;
JLabel lbl;
JButton b1,b2;
Event1(){
setTitle("Event Handling");
setLayout(new FlowLayout());
tf1 = new JTextField(10);
tf2 = new JTextField(10);
lbl = new JLabel();
b1 = new JButton("Plus");
b2 = new JButton("Minus");
b1.addActionListener(this);
b2.addActionListener(this);
add(tf1);add(tf2);add(lbl);add(b1);add(b2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,120);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent ev) {
String s1 = tf1.getText();
String s2 = tf2.getText();
int a = Integer.parseInt(s1);
int b = Integer.parseInt(s2);
int result = 0;
if(ev.getSource().equals(b1)){
result = a + b;
}
else if(ev.getSource().equals(b2)){
result = a - b;
}
lbl.setText(String.valueOf(result));
}
public static void main(String[] args){
new Event1();
}
}
반응형