JComboBox круговой обход стрелки вверх - PullRequest
0 голосов
/ 17 мая 2018

У меня вопрос по поводу JComboBox.Я пытаюсь сделать круговой обход с помощью клавиш со стрелками ВВЕРХ ВНИЗ.Однако, когда я достигаю дна после нажатия клавиши со стрелкой вниз, я устанавливаю выбранный индекс на 0. Но он достигает индекса элемента 1. То же самое происходит и в другом направлении.Когда сверху и нажата клавиша вверх, выбирается элемент перед последним элементом.Есть ли способ это исправить?

Заранее спасибо.

public class ComboTest {

public static void main(String[] args){
  JFrame f = new JFrame("Java Swing Examples");
  final JComboBox c = new JComboBox();
  for ( int i = 0; i < 5 ; i++) {
     c.addItem(i+"");
  }

  f.getContentPane().add(c);
  f.pack();
  f.setMinimumSize(new Dimension(300,200));
  f.setPreferredSize(new Dimension(300,200));

  c.addKeyListener(new KeyListener()
  {
     public void keyTyped(KeyEvent e) { }

     public void keyReleased(KeyEvent e) {
        int index = c.getSelectedIndex();
        System.out.println("Released: "+index);
     }

     public void keyPressed(KeyEvent e) {

        int index = c.getSelectedIndex();
        System.out.println("Pressed: "+index);

        if(index == c.getItemCount()-1 && e.getKeyCode()==KeyEvent.DOWN) {
           c.setSelectedIndex(0);
        } else if (index == 0 && e.getKeyCode() == KeyEvent.VK_UP) {
           c.setSelectedIndex(c.getItemCount()-1);
        }
     }
  });

1 Ответ

0 голосов
/ 21 мая 2018

Нам нужно использовать событие после установки индекса.

e.consume ()

Решено !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...