source

JComboBox 선택 변경 수신기?

factcode 2022. 8. 13. 12:06
반응형

JComboBox 선택 변경 수신기?

난 어떤 이벤트를 열려고 노력중이야JComboBox.

내가 안고 있는 문제는 명백하지 않다는 것이다.addSelectionListener()방법.

사용하려고 했습니다.actionPerformed()하지만 절대 발화하지 않습니다.

에 대한 모델을 재정의하는 것 이외JComboBox아이디어가 없어요.

에서의 선택 변경을 통지받으려면 어떻게 해야 합니까?JComboBox?**

편집: 사과드립니다.알고 보니 제가 잘못된 행동 서브클래스를 사용하고 있었습니다.JComboBox하지만 당신의 답변이 좋기 때문에 질문은 남겨두겠습니다.

다음과 같이 ActionListeners에 응답해야 합니다.

combo.addActionListener (new ActionListener () {
    public void actionPerformed(ActionEvent e) {
        doSomething();
    }
});

@존 칼스비크는 올바르게 지적하고 있다.addItemListener()잘 될 거예요.2개 받을 수 있습니다.ItemEvents단, 하나는 이전에 선택한 아이템의 선택을 해제하기 위한 것이고, 다른 하나는 새로운 아이템의 선택을 위한 것입니다.두 가지 이벤트 유형을 모두 사용하지 마십시오.

코드 예시ItemListener실행

class ItemChangeListener implements ItemListener{
    @Override
    public void itemStateChanged(ItemEvent event) {
       if (event.getStateChange() == ItemEvent.SELECTED) {
          Object item = event.getItem();
          // do something with object
       }
    }       
}

이제 엄선된 아이템만 받게 됩니다.

JComboBox에 청취자를 추가하기만 하면 됩니다.

addItemListener(new ItemChangeListener());

제가 한번 해보겠습니다.itemStateChanged()Jodonnell의 솔루션이 실패했을 경우의 인터페이스 메서드.

다음은 항목 선택 변경을 위해 수신기를 추가하는 ComboBox를 만드는 중입니다.

JComboBox comboBox = new JComboBox();

comboBox.setBounds(84, 45, 150, 20);
contentPane.add(comboBox);

JComboBox comboBox_1 = new JComboBox();
comboBox_1.setBounds(84, 97, 150, 20);
contentPane.add(comboBox_1);
comboBox.addItemListener(new ItemListener() {
    public void itemStateChanged(ItemEvent arg0) {
        //Do Something
    }
});

이거 드셔보세요

 int selectedIndex = myComboBox.getSelectedIndex();

-혹은...

Object selectedObject = myComboBox.getSelectedItem();

-혹은...

String selectedValue = myComboBox.getSelectedValue().toString();

저는 최근에 이 솔루션을 찾고 있었는데, 마지막 선택한 아이템과 새로 선택한 아이템에 특정 변수를 지정하지 않고 간단한 솔루션을 찾을 수 있었습니다.그리고 이 질문은 매우 도움이 되었지만 제가 필요로 하는 해결책을 제시하지 못했습니다.이것으로 내 문제가 해결되었으니 너와 다른 사람들이 해결되었으면 좋겠어.고마워요.

이전 아이템이나 마지막 아이템은 어떻게 구하나요?

jdk > = 8을 사용하여 이 작업을 수행할 수 있습니다.

getComboBox().addItemListener(this::comboBoxitemStateChanged);

그렇게

public void comboBoxitemStateChanged(ItemEvent e) {
    if (e.getStateChange() == ItemEvent.SELECTED) {
        YourObject selectedItem = (YourObject) e.getItem();
        //TODO your actitons
    }
}

나는 이것을 사용한다.

    cb = new JComboBox<String>();
    cb.setBounds(10, 33, 46, 22);
    panelConfig.add(cb);
    for(int i = 0; i < 10; ++i)
    {
        cb.addItem(Integer.toString(i));
    }
    cb.addItemListener(new ItemListener()
    {
        @Override
        public void itemStateChanged(ItemEvent e)
        {
            if(e.getID() == temEvent.ITEM_STATE_CHANGED)
            {
                if(e.getStateChange() == ItemEvent.SELECTED)
                {
                    JComboBox<String> cb = (JComboBox<String>) e.getSource();
                    String newSelection = (String) cb.getSelectedItem();
                    System.out.println("newSelection: " + newSelection);
                }
            }
        }
    });

언급URL : https://stackoverflow.com/questions/58939/jcombobox-selection-change-listener

반응형