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

Java에서 JComboBox를 마우스 오른쪽 버튼으로 클릭할 때 팝업 메뉴 표시하는 방법

JComboBoxJComponent 클래스의 하위 클래스로, 드롭다운 목록을 표시하며 사용자가 한 번에 오직 하나의 항목만 선택할 수 있도록 옵션을 제공합니다. JComboBox는 편집 가능 또는 읽기 전용으로 설정할 수 있으며, getSelectedItem() 메서드를 사용하면 콤보 상자에서 선택되었거나 직접 입력된 항목을 가져올 수 있습니다.

JComboBox 위에서 마우스 오른쪽 버튼을 클릭했을 때 팝업 메뉴를 표시하려면 MouseListener 인터페이스를 구현하고 mouseReleased() 메서드를 재정의해야 합니다. 이때 MouseEvent 클래스의 isPopupTrigger() 메서드를 함께 활용하면 해당 마우스 이벤트가 팝업 메뉴를 여는 트리거인지 손쉽게 판별할 수 있습니다.

아래 예제에서는 JComboBox 내부의 화살표 버튼(getComponent(0))에 마우스 리스너를 등록하여, 우클릭 시 JPopupMenu가 나타나도록 구현했습니다.

예제 코드

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

public class JComboBoxPopupTest extends JFrame {
    private JComboBox jcb;
    private JPopupMenu jpm;
    private JMenuItem mItem1, mItem2;

    public JComboBoxPopupTest() {
        setTitle("JComboBoxPopup Test");
        setLayout(new FlowLayout());
        jcb = new JComboBox(new String[] {"Item 1", "Item 2", "Item 3"});
        jpm = new JPopupMenu();
        mItem1 = new JMenuItem("Popup Item 1");
        mItem2 = new JMenuItem("Popup Item 2");
        jpm.add(mItem1);
        jpm.add(mItem2);
        ((JButton) jcb.getComponent(0)).addMouseListener(new MouseAdapter() {
            public void mouseReleased(MouseEvent me) {
                if (me.isPopupTrigger()) {
                    jpm.show(jcb, me.getX(), me.getY());
                }
            }
        });
        add(jcb);
        setSize(400, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) throws Exception {
        new JComboBoxPopupTest();
    }
}

실행 결과

프로그램을 실행한 후 콤보 상자의 화살표 버튼을 마우스 오른쪽 버튼으로 클릭하면 아래 그림과 같이 팝업 메뉴가 화면에 표시됩니다.

Java에서 JComboBox를 마우스 오른쪽 버튼으로 클릭할 때 팝업 메뉴 표시하는 방법