2016-03-29 3 views
0

Я задал аналогичный вопрос вчера, и пока я получил какое-то направление, я теперь застрял. У меня есть программа, которая содержит графический интерфейс с двумя списками, которые бок о бок. Первый список (который я буду называть как левый) содержит ряд элементов, которые анализируются из загруженного файла.Застрял добавление списка для прослушивания списка программ

Другой список (я назову правильный список) по умолчанию пуст. Пользователь может использовать некоторые кнопки для переноса элементов между двумя списками. Во время выполнения элементы в правом списке будут сохранены, а левый список будет отброшен. Теперь я успешно добавил счетчик, который динамически показывает общее количество элементов для каждого списка.

Вчера у меня появилась идея, что я хочу добавить еще один динамический счетчик, который покажет пользователю, сколько элементов выбрано в левом списке (но еще не было перемещено). Причиной этого является то, что пользователи могут иметь очень большие списки (более 300 элементов) и должны перемещать определенную сумму (например, 50). Наличие счетчика, чтобы показать, сколько элементов, которые они выбрали в данный момент, сохранит их немного времени.

Я понимаю, что для этого мне нужно использовать прослушиватель списка, который будет иметь метод для установки текста моей JLabel. Проблема в том, что я не могу определить способ получения размера списка.

Адрес, где мой список создан.

input = new DefaultListModel(); 

Здесь он заполнен массивом элементов, которые были заполнены во время буферизированного писателя на основе загружаемого файла.

String[] inputItems = new String[MainWriter.entryDetails.size()]; 
inputItems = MainWriter.entryDetails.toArray(inputItems); 

for(int i = 0; i < inputItems.length; i++){ 
      input.addElement(inputItems[i]); 
     } 

Создание списка:

inputDetails = new JList(output); 
     inputDetails.setVisibleRowCount(10); 
     inputDetails.setFixedCellHeight(20); 
     inputDetails.setFixedCellWidth(400); 
     inputDetails.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 

     //Creates a new scroll pane for the inputDetails. 
     JScrollPane list2 = new JScrollPane(inputDetails); 

Вот моя попытка создать слушатель выбора списка ..

inputDetails.addListSelectionListener(new ListSelectionListener(){ 

      @Override 
      public void valueChanged(ListSelectionEvent arg0) { 

       selectedCount.setText(inputDetails.); 

      } 



     }); 

Как вы видите, я не уверен, что лучший метод будет чтобы установить текст для выбранных в данный момент элементов.

Я считаю, что для иллюстрации моей информации достаточно информации. Я хочу иметь выделенные строки и динамически указывать, сколько элементов в левом списке выделен пользователем.

Любая помощь была бы принята с благодарностью.

EDIT:

Как предложил я добавил следующее:

inputDetails.addListSelectionListener(new ListSelectionListener(){ 

      @Override 
      public void valueChanged(ListSelectionEvent arg0) { 


       String counter = Integer.toString(inputDetails.getSelectedIndices().length); 
       selectedCount.setText("Currently Selected Transactions: "+counter); 

      } 



     }); 

однако JLabel не представляется обновлять, кто-то может сообщить мне о проблеме?

+0

'Я хочу иметь выделенную строку, а затем динамически указывать, сколько элементов в левом списке выделено пользователем'. Вам был дан этот ответ, если вы задали другой вопрос. Вы даже прочитали API JList для метода, который был дан? – camickr

+0

Я прочитал API JList, но не смог найти метод, который бы разрешил мою проблему. Метод, предложенный в ответе, не работал. – jesric1029

+0

Почему, по вашему мнению, метод будет в API, если он не работает. Ну, на самом деле API говорит вам, что метод устарел, а затем сообщает вам, какой метод использовать.Итак, почему вы думаете, что метод будет в API, если этот метод не работает. Если вы считаете, что метод не работает, вы можете отправить надлежащий [SSCCE] (http://sscce.org/), когда задаете свой вопрос, потому что это скорее проблема с вашим кодом, а не с APII !! – camickr

ответ

2

В прослушивателе selectedCount.getSelectedIndices() длина сообщит вам, сколько элементов в данный момент выбрано.

+0

Отлично! Большое спасибо, что это был метод, который я искал, которого я нигде не мог найти. Очень хорошо, что делает то, что мне нужно. – jesric1029

+0

@ jesric1029, это был метод, который я искал, которого я нигде не мог найти - неправда, вчера вы получили ответ. Этот метод возвращает индексы. Другой метод возвращает элементы. В обоих случаях вы можете получить количество индексов или элементов, поскольку один метод возвращает массив, а другой возвращает список. – camickr

+0

Спасибо за помощь. – jesric1029

Смежные вопросы