0

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

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());
    }

是我想知道是否有一种方法可以以字符串形式获取所选索引。感谢任何帮助的人!

4

1 回答 1

2

采用:

if (!list1.isSelectionEmpty()) {
   text.append(lineSeparator + list1.getModel().getElementAt(list1.getSelectedIndex()));
}
于 2012-07-28T23:39:08.757 回答