Java : GUI, 리스트뷰(List View), 클릭한 이미지만 보이게 하기

Java Programming|2018. 11. 21. 10:05
반응형

결과화면 



클릭하면 한개 그림만 보입니다.



import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.GridLayout;

import java.awt.Image;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;


import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JList;

import javax.swing.JPanel;

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener;


public class ListTest extends JFrame{

//리스트에 보여질 항목들

String[] datas = new String[] 

{"Char1","Char2","Char3","Char4","Char5","Char6"};

JList<String> list = new JList<String>(); //명시적 초기화

public ListTest() {

list.setListData(datas);  //리스트 객체의 설정과 항목들 설정

list.setSelectionBackground(Color.YELLOW);

list.setSelectionForeground(Color.RED);

add(list,BorderLayout.WEST);

//가운데 이미지 배치 영역

JPanel panel = new JPanel();

panel.setLayout(new GridLayout(3, 2, 5, 5)); //row,col,hgap,vgap

JLabel[] imgLabels = new JLabel[6]; //배열 객체 생성

for(int i = 0; i < imgLabels.length; i++) {

//이미지 아이콘 객체 생성

ImageIcon icon = new ImageIcon("images/ms1" + (i + 2) + ".png");

icon = new ImageIcon( icon.getImage()

.getScaledInstance(64, 64, Image.SCALE_SMOOTH));//Resizing

imgLabels[i] = new JLabel(icon); // 만들때 icon 넣을 수 있음

panel.add(imgLabels[i]); //만들며 붙이기

}

add(panel, BorderLayout.CENTER);

//리스트의 항목을 선택하는 것을 듣는 리스터 객체 생성 및 추가

list.addListSelectionListener(new ListSelectionListener() {

@Override //리스트의 항목 선택시 자동 실행되는 메소드 : 콜백메소드

public void valueChanged(ListSelectionEvent e) {

//리스트에게 선택된 항목의 인덱스번호 얻어오기

int index = list.getSelectedIndex();

for(JLabel t : imgLabels) t.setVisible(false);

imgLabels[index].setVisible(true);

}

});

JButton btn = new JButton("START");

add(btn,BorderLayout.NORTH);

btn.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

for(JLabel t : imgLabels) t.setVisible(false);

}

});

setTitle("List Test");

setLocation(600, 100);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setSize(300, 300);

setVisible(true);

}

public static void main(String[] args) {

new ListTest();

}

}



반응형