자바(Java) - JFrame 버튼 예제

안녕하세요

이번 시간에는 Frame이 아닌 좀 더 좋은 JFrame을 이용해서

간단한 버튼 예제 소스 코드를 올릴까 합니다.

일단 결과 화면은 아래와 같습니다



버튼이 4개가 있고, 각 버튼을 누를 때 마다 간단한 이벤트가 있습니다.

소스코드도 간단하니 이해하시는데 무리는 없을겁니다~!

public class test extends JFrame{
JButton b1,b2,b3,b4;
ImageIcon icon1,icon2,icon3,icon4,icon5,icon6;
public test(){
super("::MySwing::");
Container cp=this.getContentPane();
cp.setLayout(new GridLayout(1,0)); //1행으로 고정, 열은 add하는 수만큼 가변적으로
icon1=new ImageIcon("images/up.PNG");
icon2=new ImageIcon("images/down.PNG");
icon3=new ImageIcon("images/over.PNG");
icon4=new ImageIcon("images/딸기 쉐이크.png");
icon5=new ImageIcon("images/코카-콜라.png");
icon6=new ImageIcon("images/리코타 치즈 상하이 버거.png");
b1=new JButton("Input",icon1);
b2=new JButton("Message",icon4);
b3=new JButton("Confirm",icon5);
b4=new JButton(icon6);
//add(b1);//swing은 컴포넌트를 직접 JFrame에 부착해선 안되고, ContentPane이라는 컨테이너를 얻어와서 컨텐트페인에 붙여야 한다
//컨텐트 페인의 기본 레이아웃은 BorderLayout
cp.add(b1); cp.add(b2); cp.add(b3); cp.add(b4);
//버튼에 마우스오버시 아이콘 설정
b1.setRolloverIcon(icon3);
//마우스 누를 때 아이콘 설정
b1.setPressedIcon(icon2);
//텍스트의 수직 위치=>top
b2.setVerticalTextPosition(JButton.TOP);
//텍스트의 수평 위치=>center
b2.setHorizontalTextPosition(JButton.CENTER);
b2.setMnemonic('C'); // ALT+C
//b3텍스트 bottom center로 위치
b3.setVerticalTextPosition(JButton.BOTTOM);
b3.setHorizontalTextPosition(JButton.CENTER);
b3.setMnemonic('C'); //Alt+C
b4.setMnemonic('A'); //Alt+A
b4.setToolTipText("이건 풍선 도움말이에요~~"); //마우스를 갖다대면 뜸
MyEventHandler my=new MyEventHandler();
b1.addActionListener(my);
b2.addActionListener(my);
b3.addActionListener(my);
b4.addActionListener(my);
//awt는 창닫기를 WindowEvent 처리를 해주야하지만
//swing은 창닫기 처리를 메소드로 지원함
// 창이 종료될 때 어떤 동작을 할지 결정하는 함수
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//System.exit(0)과 동일
}
class MyEventHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
Object obj = e.getSource();
if(obj==b1){
//JOptionPane의 InputDialog 띄워서 "당신의 이름은?"
//=>사용자가 입력한 이름을 타이틀에 올리기
String str = JOptionPane.showInputDialog(b2, "당신의 이름은?");
setTitle(str);
}else if(obj==b2){
//MessageDialog 띄워서 "반가워요" 메시지를 띄우세요
JOptionPane.showMessageDialog(b2, "반가워요", "오류", JOptionPane.ERROR_MESSAGE,icon1);
}else if(obj==b3){
// ConfirmDialog 띄워서 "종료할까요?"
//"예", "아니오" 버튼만 나오도록
//"예"를 누르면 종료시키기
int result=JOptionPane.showConfirmDialog(b2, "종료할까요?", "확인", JOptionPane.YES_NO_OPTION);
if(result==JOptionPane.YES_OPTION){ //버전업 하면 0이 유효하지 않기 때문에.. JOptionPane.YES_OPTION으로 정정하는게 좋음
System.exit(0);
}
}else if(obj==b4){
//MessageDialog를 띄위되 이미지만 나오도록
//JOptionPane.showMessageDialog(b4, " ", title, messageType, icon1);
JOptionPane.showMessageDialog(b1,"","ImageViewer",JOptionPane.INFORMATION_MESSAGE,icon6);
}
}
}//inner class ///////////////////////
public static void main(String[] args) {
test my=new test();
my.setSize(700, 400);
my.setVisible(true);
}
}

댓글 없음:

댓글 쓰기