2015-10-10 5 views
1

MULTIPLE_INTERVAL_SELECTION используется для выбора одного или нескольких смежных диапазонов индексов за раз. SINGLE_INTERVAL_SELECTION используется для выбора одного непрерывного диапазона индексов за раз. Но здесь он выбирает один индекс списка за раз.SINGLE_INTERVAL_SELECTION не работает должным образом

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

    public class SwingLessonFive extends JFrame { 

JButton button1; 
JList favoriteMovies, favoriteColors; 
DefaultListModel defaultList = new DefaultListModel(); 
JScrollPane scrollBars; 
String infoOnComponent =""; 

public static void main(String[] args) { 
    new SwingLessonFive(); 
} 

public SwingLessonFive() { 
    this.setSize(400,400); 
    this.setTitle("My Fifth Frame"); 
    this.setLocationRelativeTo(null); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JPanel thePanel = new JPanel(); 

    button1 = new JButton("Get Answer"); 
    ListenForButton lForButton = new ListenForButton(); 
    button1.addActionListener(lForButton); 
    thePanel.add(button1); 


    String[] movies = {"Kick","Batman","SpiderMan","Lucy"}; 
    favoriteMovies = new JList(movies); 
    favoriteMovies.setFixedCellHeight(30); 
    favoriteMovies.setFixedCellWidth(150); 
    favoriteMovies.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); //this is the part I didn't undertand 

    String[] colors = {"Black","Orange","Brown","Pink","Yellow","White","Red"}; 

    for(String color : colors) { 
     defaultList.addElement(color); 
    } 

    defaultList.add(2, "Purple"); 

    favoriteColors = new JList(defaultList); 
    favoriteColors.setVisibleRowCount(4); 
    scrollBars = new JScrollPane(favoriteColors,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
    favoriteColors.setFixedCellHeight(30); 
    favoriteColors.setFixedCellWidth(150); 



    thePanel.add(favoriteMovies); 
    thePanel.add(scrollBars); 



    this.add(thePanel); 
    this.setVisible(true); 

} 

private class ListenForButton implements ActionListener { 

    public void actionPerformed(ActionEvent ae) { 
     if(ae.getSource() == button1) { 
      if(defaultList.contains("Black")) { 
       infoOnComponent += "Black is in the list \n"; 
      } 

      if(!defaultList.isEmpty()) { 
       infoOnComponent +="The list isn't empty\n"; 
      } 

      infoOnComponent += "Elements in the list: "+defaultList.getSize() +"\n"; 
      infoOnComponent += "Last Element: "+defaultList.lastElement() + "\n"; 
      infoOnComponent += "First Element: "+defaultList.firstElement()+"\n"; 
      infoOnComponent += "Get element at index 1 "+defaultList.get(1)+"\n"; 
      defaultList.remove(0); 
      defaultList.removeElement("Yellow"); 

      Object[] arrayOfList = defaultList.toArray(); 

      for(Object color: arrayOfList) { 
       infoOnComponent += color +"\n"; 
      } 

      JOptionPane.showMessageDialog(SwingLessonFive.this,infoOnComponent,"Information",JOptionPane.INFORMATION_MESSAGE); 
      infoOnComponent = ""; 
     } 
    } 
} 



} 
+1

Я сделал изменение @AndrewThompson – tardycoder30

ответ

1

Но здесь выбор индекса один список в то время.

Исправить. Один клик выберет одну строку.

Чтобы выбрать несколько отдельных строк, удерживая нажатой клавишу Control при нажатии

Чтобы выбрать диапазон строк, удерживая нажатой клавишу Shift, при нажатии кнопки.

Таким образом, выбор зависит от режима выбора, а также от того, используются ли клавиши переключения/управления.

Экспериментируйте, пока не получите правильный режим выбора для вашего требования.