Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java JList에서 항목 선택 시 값 표시하기: MouseAdapter 활용법

JListJComponent 클래스의 하위 클래스로, 사용자가 단일 항목 또는 여러 항목을 선택할 수 있도록 지원하는 Swing 컴포넌트입니다. JList는 ListSelectionListener 인터페이스를 사용할 수 있으며, 이 인터페이스에는 추상 메서드인 valueChanged()가 포함되어 있습니다.

JList에서 항목이 선택되었을 때 해당 값을 화면에 표시하려면 MouseListener 인터페이스를 구현하거나 MouseAdapter 클래스를 상속한 뒤, MouseEvent 클래스의 getClickCount() 메서드를 호출하여 단일 클릭 이벤트(getClickCount() == 1)를 감지하면 됩니다.

구현 예제

아래 예제 코드는 JList의 항목을 한 번 클릭하면 선택된 값이 팝업 대화상자로 표시되도록 구현한 것입니다.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class JListItemSeletionTest extends JFrame {
    private JList list;
    private JScrollPane jsp;
    private Vector data;
    public JListItemSeletionTest() {
        setTitle("JListItemSeletion Test");
        list = new JList();
        data = new Vector();
        data.addElement("India");
        data.addElement("Australia");
        data.addElement("England");
        data.addElement("England");
        data.addElement("New Zealand");
        data.addElement("South Africa");
        list.setListData(data);
        list.setSelectedIndex(0);
        list.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent me) {
                if (me.getClickCount() == 1) {
                    JList target = (JList)me.getSource();
                    int index = target.locationToIndex(me.getPoint());
                    if (index >= 0) {
                        Object item = target.getModel().getElementAt(index);
                        JOptionPane.showMessageDialog(null, item.toString());
                    }
                }
            }
        });
        jsp = new JScrollPane(list);
        add(jsp, BorderLayout.NORTH);
        setSize(400, 275);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }
    public static void main(String args[]) {
        new JListItemSeletionTest();
    }
}

코드 설명

  • 데이터 추가: Vector 객체에 국가 이름들을 요소로 추가한 후 setListData() 메서드로 JList에 바인딩합니다.
  • 마우스 이벤트 처리: MouseAdapter를 상속하여 mouseClicked() 메서드를 오버라이드하고, getClickCount()가 1일 때(단일 클릭) 로직을 실행합니다.
  • 선택 항목 확인: locationToIndex()로 클릭 위치의 인덱스를 얻고, getModel().getElementAt(index)로 해당 항목의 값을 가져옵니다.
  • 값 표시: JOptionPane.showMessageDialog()를 통해 선택된 값을 대화상자로 출력합니다.

실행 결과

프로그램을 실행하면 국가 목록이 담긴 JList가 나타나며, 목록에서 항목을 한 번 클릭하면 아래와 같이 선택된 값이 팝업 창으로 표시됩니다.

Java JList에서 항목 선택 시 값 표시하기: MouseAdapter 활용법