2016-11-20 5 views
0

Я ищу компонент Swing, который сочетает в себе внешний вид JList и функции «вверх-вниз», предоставляемые JSpinner, который также реагирует на прокрутку. Кто-нибудь знает что-то вроде этого, а если нет, как я могу создать свой собственный компонент Swing? Мне это нужно для игры, я пытаюсь сделать ...Есть ли у Java что-то вроде компонента JRoulette?

ответ

0

Вы можете работать вокруг него, как это:

  JList<String> list = new JList<String>(new String[]{"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"}); 
      list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
      list.setLayout(new BorderLayout()); 
      list.setSelectedIndex(0); 

      JScrollPane scrollpane = new JScrollPane(list); 
      scrollpane.setPreferredSize(new Dimension(200, 20)); 

      scrollpane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {     
       @Override 
       public void adjustmentValueChanged(AdjustmentEvent e) 
       { 
        float pos = scrollpane.getVerticalScrollBar().getValue()/(float) scrollpane.getVerticalScrollBar().getMaximum(); 
        int rpos = (int) (pos * list.getModel().getSize()); 

        list.setSelectedIndex(rpos); 
       } 
      }); 

      JPanel containerPanel = new JPanel(); 
      containerPanel.setLayout(new FlowLayout()); 
      containerPanel.setPreferredSize(new Dimension(200, 20));           
      containerPanel.add(scrollpane); 

Сначала вы создаете JList, то поместите его в JScrollPane, а затем вам добавьте прослушиватель настройки, чтобы выбрать только видимый элемент.

Showcase

+0

Это немного Hacky, но это работает. – 493msi

+0

Полагаю, я попробую это. Большое спасибо, добрый незнакомец! – ArcIX