본문 바로가기

JAVA/개발

[JAVA] 이미지 갤러리

라디오 버튼으로 진행 방향을 정하고 사진을 클릭하면 다음 사진을 보여준다. 코드를 리뷰하면서 발견한 건데 왜 direction을 bool로 안 만들고 String으로 만들었을까...그래도 파일리스트도 동적으로 받아오고 그걸 읽어 파일 범위 내에서만 이벤트가 발동되게 해 놓은 걸 보니 나름 제대로 만들려고 노력한 것 같다.

 

 

 

코드

 

import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import java.io.*;
import javax.swing.*;
public class eight extends JFrame{
	JRadioButton left,right;
	Vector<ImageIcon> v=new Vector<ImageIcon>();
	String direction="null";
	File dir=new File("images");
	File files[]=dir.listFiles();
	JLabel imageLabel;
	int num=0;
	public eight() {
		setTitle("Image Gallery Practice Frame");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		Container c=getContentPane();
		c.setLayout(new BorderLayout());
		
		ButtonGroup group=new ButtonGroup();//버튼 그룹 객체 생성
		
		JPanel radioPanel=new JPanel();
		left=new JRadioButton("left");
		right=new JRadioButton("right");

		group.add(left);
		group.add(right);
		radioPanel.add(left);
		radioPanel.add(right);
		left.addItemListener(new MyItemListener());
		right.addItemListener(new MyItemListener());
		
		for(int i=0;i<files.length;i++) {
			ImageIcon icon=new ImageIcon(files[i].toString());
			v.add(icon);
		}
		
		imageLabel=new JLabel(v.get(num));
		imageLabel.setSize(800,550);
		imageLabel.addMouseListener(new MyMouseListener());
		c.add(imageLabel,BorderLayout.CENTER);
		
		c.add(radioPanel,BorderLayout.NORTH);
		setSize(800,600);
		setVisible(true);
	}
	class MyItemListener implements ItemListener{
		public void itemStateChanged(ItemEvent e) {
			if(e.getStateChange()==ItemEvent.DESELECTED)
				return;
			if(right.isSelected())
				direction="right";
			else
				direction="left";
		}		
	}
	class MyMouseListener extends MouseAdapter{
		public void mousePressed(MouseEvent e) {
			if(direction.equals("right")&&num<files.length-1)
				{num++;imageLabel.setIcon(v.get(num));}
			else if(direction.equals("left")&&num!=0)
				{num--;imageLabel.setIcon(v.get(num));}
			else
				return;
		}
	}
	public static void main(String[]args) {
		new eight();
	}
}

'JAVA > 개발' 카테고리의 다른 글

[JAVA] 스네이크 게임  (0) 2022.10.07
[JAVA] 파이 차트  (0) 2022.10.04
[JAVA] 간단 순발력 테스트  (0) 2022.08.12
[JAVA] 가위바위보  (0) 2022.08.12
[JAVA] 간단 에임 부스터  (0) 2022.08.10