То, почему itemStateChanged на JComboBox, называют дважды при изменении?

36
задан Luffy 4 May 2015 в 11:23
поделиться

3 ответа

Взгляните на этот источник:

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

public class Tester {

    public Tester(){

        JComboBox box = new JComboBox();
        box.addItem("One");
        box.addItem("Two");
        box.addItem("Three");
        box.addItem("Four");

        box.addItemListener(new ItemListener(){
            public void itemStateChanged(ItemEvent e){
                System.out.println(e.getItem() + " " + e.getStateChange() );
            }
        });

        JFrame frame = new JFrame();
        frame.getContentPane().add(box);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String [] args) {
        Tester tester = new Tester();
    }
}

Использование getStateChange, чтобы определить, выбран ли объект или отменил выбор

31
ответ дан kgiannakakis 27 November 2019 в 05:45
поделиться

Согласно этому поток ,

Это смещено, когда Вы оставляете один результат, и затем названный снова, когда установлено на другой результат

не прислушиваются к itemStateChanged. Используйте ActionListener вместо этого, который хорош для обработки событий комбинации.
Вам нужен ItemStateListener, если необходимо отдельно обработать отмену выбора / выбор в зависимости от включенного объекта.

Изменение состояния объекта в itemStateChanged заставляет itemStateChanged быть запущенным... названный "повторной входимостью".

16
ответ дан VonC 27 November 2019 в 05:45
поделиться

Йо может это сделать так:

import java.awt.event.*;

jComboBox1.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("Hello");
        }
    });
7
ответ дан 27 November 2019 в 05:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: