라디오 버튼으로 진행 방향을 정하고 사진을 클릭하면 다음 사진을 보여준다. 코드를 리뷰하면서 발견한 건데 왜 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 |