Java
Java setDefaultCloseOperation(int operation)
승모근뭉치
2023. 2. 2. 01:47
프로젝트 내 src 내 javabasic 패키지 내 Ex5RadioImage.java
package javabasic;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
//문제:5개의 라디오버튼(배열) 을 선택할때마다 이미지 변경하기
//이미지는 자기 마음대로....(Ex3을 약간 수정해서 하세요)
public class Ex5RadioImage extends JFrame {
// String imageName1="C:\\java0901\\image\\연예인사진\\1.JPG";
// String imageName2="C:\\java0901\\image\\연예인사진\\2.JPG";
// String imageName3="C:\\java0901\\image\\연예인사진\\3.JPG";
// String imageName4="C:\\java0901\\image\\연예인사진\\4.JPG";
// String imageName5="C:\\java0901\\image\\연예인사진\\5.JPG";
//
// Image image;
// JRadioButton rb[]=new JRadioButton[5];
// String []RbTitle= {"image1","image2","image3","image4","image5"};
//
JRadioButton []rb=new JRadioButton[5];
DrawImage draw=new DrawImage();
String []title= {"김태희","딸기","산토리니","이나영","하지원"};
String imageName1="C:\\java0901\\image\\연예인사진\\31.JPG";
String imageName2="C:\\java0901\\image\\연예인사진\\4.JPG";
String imageName3="C:\\java0901\\image\\연예인사진\\26.JPG";
String imageName4="C:\\java0901\\image\\연예인사진\\23.JPG";
String imageName5="C:\\java0901\\image\\연예인사진\\24.JPG";
Image image;
public Ex5RadioImage(String title) {
// TODO Auto-generated constructor stub
super(title);
this.setBounds(700, 100, 500, 600);//시작위치x,y,크기 w,h
//super로 해도 되고 this로 해도 됨 super는 조상
//this로 해도 상속을 받아서 괜찮음
//this.getContentPane().setBackground(Color.orange);//프레임위에 있는 패널의 색상 변경
// this.getContentPane().setBackground(new Color(211,225,208));//프레임위에 있는 패널의 색상 변경
this.getContentPane().setBackground(Color.white);//프레임위에 있는 패널의 색상 변경
this.setDesign();//디자인 코드
this.setVisible(true);//보이게 하기
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//프로그램을 종료해주는 메서드
}
// 이미지를 그리기 위한 내부클래스
class DrawImage extends Canvas
{
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
g.drawImage(image, 60, 30, 300, 400, this);
}
}
public void setDesign()
{
// int xPos=30;
// ButtonGroup bg1=new ButtonGroup();
// for(int i=0;i<rb.length;i=i+1)
// {
// rb[i]=new JRadioButton(RbTitle[i], i==1?true:false);
// rb[i].setBounds(xPos, 30, 80, 30);
// rb[i].addActionListener(new RadioClick());
// this.add(rb[i]);
// bg1.add(rb[i]);
//
//
// }
this.setLayout(null);
// 라디오버튼
ButtonGroup bg=new ButtonGroup();
int xPos=20;
for(int i=0;i<rb.length;i=i+1)
{
rb[i]=new JRadioButton(title[i], i==2?true:false);
rb[i].setBounds(xPos, 30, 80, 30);
rb[i].setOpaque(false);
this.add(rb[i]);
bg.add(rb[i]);
xPos=xPos+80;
final int idx=i;
// 익명내부클래스로 이벤트
rb[i].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
// i번째 이미지 생성
switch (idx) {
case 0:
image=new ImageIcon(imageName1).getImage();
break;
case 1:
image=new ImageIcon(imageName2).getImage();
break;
case 2:
image=new ImageIcon(imageName3).getImage();
break;
case 3:
image=new ImageIcon(imageName4).getImage();
break;
case 4:
image=new ImageIcon(imageName5).getImage();
break;
}
//캔바스 paint 호출
draw.repaint();
}
});
}
// DrawImage 추가
// 초기 이미지-산토리니
image=new ImageIcon(imageName3).getImage();
draw.setBounds(0, 100, 500, 500);
this.add(draw);
}
// class RadioClick implements ActionListener
// {
// @Override
// public void actionPerformed(ActionEvent e) {
// // TODO Auto-generated method stub
//
// }
// }
public static void main(String[] args) {
// TODO Auto-generated method stub
new Ex5RadioImage("이미지선택");
}
}
setDefaultCloseOperation(int operation) 메서드는
이 프레임에서 사용자가 "close" 를 시작할 때 기본적으로 일어날 동작을 설정한다.
개발자는 반드시 다음의 선택지 중에 하나를 구체화해야만 한다:
- DO_NOTHING_ON_CLOSE (WindowConstants 에 정의됨): 아무것도 하지 않음; 프로그램에게 등록된 WindowListener 객체의 windowClosing 메서드 내에서 작업을 다루기를 요구한다.
- HIDE_ON_CLOSE (WindowConstants 에 정의됨): 아무 등록된 WindowListener 객체들을 호출한 뒤에 자동적으로 그 프레임을 숨긴다.
- DISPOSE_ON_CLOSE (WindowConstants 에 정의됨): 어떤 등록된 WindowListener 객체들을 호출한 후 자동으로 그 프레임을 숨기고 정리한다.
- EXIT_ON_CLOSE (JFrame 에 정의됨): System exit 함수를 써서 application 을 빠져나간다. 이 정수값은 오로지 application 종류에서만 사용하자.