2012-07-28 46 views
0

这里相当新颖。我正在编写一个GUI程序,我希望能够使用JButton将所选列表项的字符串(而不是索引编号)附加到文本区域。我不知道哪种Java方法可以让我做到这一点。当我使用getSelectedIndex方法时,它只允许我将索引号,而不是列表项的字符串值附加到我的文本区域。如果目前还不清楚是什么我问,这里是我的代码:在Java中使用ListSelectionListener打印JList选择字符串

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

public class FantasyInterface extends JFrame implements ActionListener{ 

private JList list1; 
private JList list2; 
private JLabel runningbacks; 
private JButton addPlayer1; 
private JButton addPlayer2; 
private JTextArea text; 
String lineSeparator = System.getProperty("line.separator"); 
private String[] rbs = {"Matt Forte", "Arian Foster", "Maurice Jones-Drew", "Adrian Peterson", "Ray Rice"}; 
FantasyTeam team1 = new FantasyTeam(5); 
FantasyTeam team2 = new FantasyTeam(5); 

public FantasyInterface(){ 
    super("Fantasy Football Simulator"); 

    // Set up listsPanel 
    JPanel listsPanel = new JPanel(); 

    runningbacks = new JLabel("Running Backs:"); 
    listsPanel.add(runningbacks); 
    list1 = new JList(rbs); 
    list1.setVisibleRowCount(5); 
    list1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 
    listsPanel.add(list1); 

    addPlayer1 = new JButton("Add To Team 1"); 
    listsPanel.add(addPlayer1); 

    list2 = new JList(rbs); 
    list2.setVisibleRowCount(5); 
    list2.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 
    listsPanel.add(list2); 

    addPlayer2 = new JButton("Add To Team 2"); 
    listsPanel.add(addPlayer2); 
    // Add formatted JPanels to Content Pane 
    getContentPane().add(listsPanel, BorderLayout.NORTH); 

    // Set up textPanel, where info will appear 
    JPanel textPanel = new JPanel(); 
    text = new JTextArea(20, 20); 
    textPanel.add(text); 
    // Add formatted JPanels to Content Pane 
    getContentPane().add(text, BorderLayout.SOUTH); 

    ListSelectionListener listSelectionListener = new ListSelectionListener() { 
      public void valueChanged(ListSelectionEvent listSelectionEvent) { 
      //System.out.println("First index: " + listSelectionEvent.getFirstIndex()); 
      //System.out.println(", Last index: " + listSelectionEvent.getLastIndex()); 
      boolean adjust = listSelectionEvent.getValueIsAdjusting(); 
      //System.out.println(", Adjusting? " + adjust); 
      if (!adjust) { 
       JList list = (JList) listSelectionEvent.getSource(); 
       int selections[] = list.getSelectedIndices(); 
       Object selectionValues[] = list.getSelectedValues(); 
       for (int i = 0, n = selections.length; i < n; i++) { 
       if (i == 0) { 
        System.out.println(" Selections: "); 
       } 
       System.out.println(selections[i] + "/" + selectionValues[i] + " "); 
       } 
      } 
      } 
     }; 
    list1.addListSelectionListener(listSelectionListener); 
    addPlayer1.addActionListener(this); 
} 


public void actionPerformed(ActionEvent event){ 
    Object srcObj = event.getSource(); 

    if (srcObj == addPlayer1){ 
     text.append(lineSeparator + list1.getSelectedIndex()); 
    } 
} 

}

最后一部分,

if (srcObj == addPlayer1){ 
     text.append(lineSeparator + list1.getSelectedIndex()); 
    } 

就是我想知道是否有获得方法以字符串形式选择的索引。感谢任何人的帮助!

回答

2

用途:

if (!list1.isSelectionEmpty()) { 
    text.append(lineSeparator + list1.getModel().getElementAt(list1.getSelectedIndex())); 
} 
+0

太谢谢你了 – bulx0001 2012-07-29 03:10:28