Java : GUI, 체크박스(Check Box), Radio 버튼, ComboBox 만들기

Java Programming|2018. 11. 20. 15:40
반응형

결과입니다.


import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.GridLayout;

import java.awt.Image;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;


import javax.swing.ButtonGroup;

import javax.swing.ImageIcon;

import javax.swing.JCheckBox;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JRadioButton;

import javax.swing.JTextField;


public class CompoundButtonTest extends JFrame {

JCheckBox cb1, cb2, cb3;

JTextField cb_tf;

JRadioButton rb1, rb2, rb3;

JTextField rb_tf;

public CompoundButtonTest() {

setTitle("복합버튼 테스트");

setDefaultCloseOperation(EXIT_ON_CLOSE);

setPreferredSize(new Dimension(350, 500));

//1.Check Box :

JPanel cbPanel = new JPanel();

cbPanel.setLayout(new GridLayout(2, 1));

JPanel panel = new JPanel();

cb1 = new JCheckBox("Apple");

cb2 = new JCheckBox("Banana");

cb3 = new JCheckBox("Orange");

panel.add(cb1);

panel.add(cb2);

panel.add(cb3);

cbPanel.add(panel);

JPanel panel2 = new JPanel();

cb_tf = new JTextField(15);

panel2.add(cb_tf);

cbPanel.add(panel2);

add(cbPanel,BorderLayout.NORTH);

//체크박스 상태 변경 듣는 리스너 추가

cb1.addItemListener(itemListener);

cb2.addItemListener(itemListener);

cb3.addItemListener(itemListener);

//2.Radio : 

JPanel rbPanel = new JPanel();

rbPanel.setLayout(new GridLayout(2, 1));

JPanel panel3 = new JPanel();

rb1 = new JRadioButton("Korea");

rb2 = new JRadioButton("China");

rb3 = new JRadioButton("Japan");

panel3.add(rb1); panel3.add(rb2); panel3.add(rb3);

//라디오버튼 그릅화

ButtonGroup rg = new ButtonGroup();

rg.add(rb1); rg.add(rb2); rg.add(rb3);

JPanel panel4 = new JPanel();

rb_tf = new JTextField(15);

panel4.add(rb_tf);

rbPanel.add(panel3);

rbPanel.add(panel4);

add(rbPanel,BorderLayout.SOUTH);

//라디오버튼 클릭시 글씨 출력위한 리스너 추가

rb1.addActionListener(rbListener);

rb2.addActionListener(rbListener);

rb3.addActionListener(rbListener);

//3.ComboBox 밑에 이미지 넣기

JPanel centerPanel = new JPanel();

centerPanel.setLayout(new BorderLayout());

JPanel comboPanel = new JPanel();

JComboBox<String> comboBox = new JComboBox<String>();  //보통 String사용

comboBox.addItem("character 1");

comboBox.addItem("character 2");

comboBox.addItem("character 3");

comboBox.addItem("character 4");

comboBox.addItem("character 5");

comboPanel.add(comboBox);

///이미지 보여주기 위한 컴포넌트

ImageIcon icon = new ImageIcon("images/ms_01.png");

icon = new ImageIcon( icon.getImage()

.getScaledInstance(256, 256, Image.SCALE_SMOOTH));

JLabel label = new JLabel(icon); //생성자에 아이콘 지정 가능

centerPanel.add(comboPanel,BorderLayout.NORTH);

centerPanel.add(label,BorderLayout.CENTER);

add(centerPanel, BorderLayout.CENTER); //프레임에 붙이기

//콤보박스에 리스너 붙이기

comboBox.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

System.out.println(comboBox.getSelectedItem());

int index = comboBox.getSelectedIndex();

ImageIcon icon = new ImageIcon("images/ms_0" + (1+index) + ".png");

icon = new ImageIcon( icon.getImage()

.getScaledInstance(256, 256, Image.SCALE_SMOOTH));

label.setIcon(icon);

}

});

pack();

setLocation(600, 100);

setVisible(true);

}//생성자

//Radio 버튼 리스너 객체 생성

ActionListener rbListener = new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

String str = e.getActionCommand();

//컴포넌트에 써있는 글씨 리턴

rb_tf.setText(str);

}

};

//CheckBox의 체크상태 변경 듣는 리스너 객체 생성 - 필드 위치

ItemListener itemListener = new ItemListener() {

@Override

public void itemStateChanged(ItemEvent e) {

//체크박스들의 체크상태를 확인하여 true면 써있는 글씰 얻어와서 

//TextField에 보여주기

String str = "";

if( cb1.isSelected() ) str = str + cb1.getText();

if( cb2.isSelected() ) str = str + cb2.getText();

if( cb3.isSelected() ) str = str + cb3.getText();

cb_tf.setText(str);

}

};

public static void main(String[] args) {

// TODO Auto-generated method stub

new CompoundButtonTest();


}


}



반응형

Java : Swing 버튼과 이미지 띄우기

Java Programming|2018. 11. 19. 11:59
반응형

public class Main {

public static void main(String[] args) {

JFrame frame = new JFrame("Swing GUI"); //1.최상위 컨테이너 생성

frame.setSize(500, 600); //사이즈

JButton b1 = new JButton("btn1"); //2.컴포넌트들 추가하기

JButton b2 = new JButton("button2");

//기본적으로 JFrame은 BorderLayout이란 배치관리자로 돼 있음

//가장 쉬운 레이아웃 매니저인 FlowLayout으로 변경

frame.setLayout(new FlowLayout());

frame.add(b1);  //컨테이너에 컴포넌트 추가

frame.add(b2);

//JLabel - 글씨 보여주는 컴포넌트

JLabel label = new JLabel("This is Label");

//label.setSize(100, 150);  //FlowLayout안에선 사이즈지정 안됨

frame.add(label);

//JTextField - 사용자로부터 글씨 입력받는 컴포넌트

JTextField tf = new JTextField(20);

frame.add(tf);

//이미지 - 이미지용 컴포넌트는 없음

//JLabel에 이미지(아이콘)를 보여줄 수 있는 능력을 활용

ImageIcon icon = new ImageIcon("images/ms21.png"); //이미지 아이콘 객체 생성

//이미지를 실제로 갖고 있는 Image객체 뽑아오기

Image im = icon.getImage(); //뽑아온 이미지 객체 사이즈를 새롭게 만들기!

Image im2 = im.getScaledInstance(250, 250, Image.SCALE_DEFAULT);

//새로 조절된 사이즈의 이미지(im2)를 가지는 ImageIcon 객체를 다시 생성

ImageIcon icon2 = new ImageIcon(im2);

JLabel img = new JLabel(icon2);

/*JLabel img = new JLabel();

img.setIcon(icon2);*/

frame.add(img);

반응형

//Swing은 frame창은 X버튼 누르면 자동으로 사라지지만 프로그램은 종료되지 않음.

//X버튼 누르면 프로그램도 종료되도록 설정

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setLocation(300, 200);  //위치 지정

frame.setVisible(true); //화면에 보이기

}

}

 

결과

 

 

반응형

Java : AWT 창 띄우고 버튼 만들기

Java Programming|2018. 11. 19. 11:03
반응형

public class Main {

public static void main(String[] args) {

Frame f = new Frame("GUI TEST");  //최상위 컨테이너 객체 생성

f.setSize(500, 400);  //사이즈 

// X 버튼 클릭 종료하게 하기  //콜백 메소드

WindowAdapter adapter = new WindowAdapter() {

//WindowAdapter는 WindowListner를 상속받음

@Override

public void windowClosing(WindowEvent e) {

f.dispose(); //이 프레임 창(window)를 없애기

}

};

f.addWindowListener(adapter);

//버튼 만들기, 컨테이너 안에 놓여질 컴포넌트(구성요소)들을 배치

Button btn = new Button("확인");  //컴포넌트 1개 생성

Button btn2 = new Button("취소");

Button btn3 = new Button("Hello World");

//btn3번 클릭시 글씨 변경하기, btn3 객체가 클릭됐는지 바라보고 있는 감시 객체 생성 및 붙여주기

btn3.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

btn3.setLabel("Nice Java");

}

});

//컴퓨넌트 배치를 어떻게 할지 결정하는 LayoutManager 객체 생성

FlowLayout layout = new FlowLayout(); //차례로 옆으로 배치

f.setLayout(layout);

//만들어진 버튼을 컨테이너(Frame)에 추가!

f.add(btn);

f.add(btn2);

f.add(btn3);

f.setVisible(true); //화면에 보이게

}

}


결과창입니다.


반응형