java/swing

명품 JAVA - Open Challenge 10 버튼 클릭으로 좌우로 이미지 넘기기 - swing

aphyrince 2022. 1. 8. 02:02
반응형

실행 화면

 

소스 코드

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

public class Assignment extends JFrame{
	private Container contentPane;
	private JPanel menuPanel = new JPanel();
	private ImageIcon leftButtonImage = new ImageIcon(Assignment.class.getResource("images/leftButtonImage.png"));
	private ImageIcon rightButtonImage = new ImageIcon(Assignment.class.getResource("images/rightButtonImage.png"));
	private JButton leftButton = new JButton(leftButtonImage);
	private JButton rightButton = new JButton(rightButtonImage);
	private ImageIcon images[] = new ImageIcon[4];
	private JLabel imageLabel;
	private int currentImageIndex = 0;
	
	public Assignment() {
		setTitle("과제 #3) 버튼 클릭으로 좌우로 이미지 넘기기");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		contentPane = getContentPane();
		contentPane.setLayout(new BorderLayout());
		
		for(int i=0;i<4;i++) {
			images[i] = new ImageIcon(Assignment.class.getResource("images/image"+i+".png"));
		}
		imageLabel = new JLabel(images[currentImageIndex]);
		contentPane.add(imageLabel,BorderLayout.CENTER);
		
		menuPanel.setLayout(new FlowLayout());
		menuPanel.setBackground(Color.gray);
		leftButton.addMouseListener(new LeftButtonEventListener());
		rightButton.addMouseListener(new RightButtonEventListener());
		menuPanel.add(leftButton);
		menuPanel.add(rightButton);
		contentPane.add(menuPanel,BorderLayout.SOUTH);
		
		setSize(350,450);
		setVisible(true);
	}
	
	class LeftButtonEventListener extends MouseAdapter{
		public void mousePressed(MouseEvent e) {
			currentImageIndex--;
			if(currentImageIndex<0)currentImageIndex = 3;
			imageLabel.setIcon(images[currentImageIndex]);
		}
	}
	class RightButtonEventListener extends MouseAdapter{
		public void mousePressed(MouseEvent e) {
			currentImageIndex++;
			if(currentImageIndex>3)currentImageIndex = 0;
			imageLabel.setIcon(images[currentImageIndex]);
		}
	}
	
	public static void main(String[] args) {
		new Assignment();
	}
}

파일 구조

이미지 파일

 

반응형