본문 바로가기
JAVA/예제

[JAVA] swing과 이벤트를 사용하여 슬라이더 만들기

by JJH0100 2022. 10. 25.
728x90
반응형
package Ex01;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ButtonAndImgLabelFrame extends JFrame{
	private JLabel imageLabel;
	private ImageIcon[] images = new ImageIcon[4];
	int curId; //현재 선택된 이미지 번호(0~3)
	
	public ButtonAndImgLabelFrame() {
		setTitle("이미지 슬라이드");
		setSize(300, 400);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		Container c = getContentPane();
		c.setLayout(new BorderLayout());
		
		//이미지 파일 로딩
		//프로젝트의 img 폴더의 img01.jpg, img02.jpg...
		for(int i=0; i<images.length; i++) {
			images[i] = new ImageIcon("img/img"+ i + ".jpg");
		}
		curId = 0;
		imageLabel = new JLabel(images[curId]); //현재 선택된 이미지를 레이틀에 출력
		c.add(imageLabel, BorderLayout.CENTER);
		c.add(new MenuPanel(), BorderLayout.SOUTH);
		
		setVisible(true);
	}
	class MenuPanel extends JPanel{
		public MenuPanel() {
			//Panel은 레이아웃 미지정시 자동으로 Flow가 됨
			setBackground(Color.gray);
			ImageIcon leftIcon = new ImageIcon("img/bt_prev.png");
			ImageIcon rightIcon = new ImageIcon("img/bt_next.png");			
			JButton leftBt = new JButton(leftIcon);
			JButton rightBt = new JButton(rightIcon);
			add(leftBt);
			add(rightBt);
			
			leftBt.addActionListener(new ActionListener() {				
				@Override
				public void actionPerformed(ActionEvent e) {
					curId--;
					curId = curId + images.length;
					curId = curId % images.length;
					imageLabel.setIcon(images[curId]);					
				}
			});
			rightBt.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent e) {
					curId++;
					curId = curId % images.length;
					imageLabel.setIcon(images[curId]);					
				}
			});
			
		}
	}
	public static void main(String[] args) {
		new ButtonAndImgLabelFrame();
	}
}

728x90
반응형

댓글