2014-02-15 33 views
0

我對我的程序感到困惑。如果我點擊某個列表,如何獲得我的整數數組?這是我正在嘗試的代碼。Int數組無法調出

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

public class JListDemo extends JFrame { 
    JList list; 
    String[] listColorNames = {"tres", "dos", "piso", "kwatro", "sais"}; 
    int[] listColorValues = {3, 2, 1, 4, 6}; 
    Container con; 

    public JListDemo() { 
     super("List Source Demo"); 
     con = getContentPane(); 
     con.setLayout(new FlowLayout()); 
     list = new JList(listColorNames); 
     list.setSelectedIndex(0); 
     list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
     con.add(new JScrollPane(list)); 
     list.addListSelectionListener(new ListSelectionListener() { 
      public void valueChanged(ListSelectionEvent e) { 

       con. (listColorValues[list.getSelectedIndex()]); 
      } 
     } 
     ); 
     setSize(200, 200); 
     setVisible(true); 
     //setSizable(false); 
    } 

    public static void main(String[] args) { 
     JListDemo test = new JListDemo(); 
     test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
} 
+0

我*真的很困惑。你想對'Container'做什麼? – Makoto

+0

沒有先生,我試過,如果它可以工作,但不是。如果我選擇列表中的一位先生,我需要獲得價格。 – Batusai

+1

那麼這個怎麼樣:你究竟在做什麼?這就是我困惑的地方。 – Makoto

回答

1

如果我明白你想要做什麼:

list.addListSelectionListener(new ListSelectionListener() { 
     public void valueChanged(ListSelectionEvent e) { 

      JLabel price = new JLabel(listColorValues[list 
        .getSelectedIndex()] + ""); 

      con.add(price); 
      con.revalidate(); 
     } 
    }); 

但是,如果你想顯示的文字下面的列表中,然後FlowLayout中不適合您的需求。

0

不要讓兩個不同的組成部分,如果他們是相關的,而不是封裝他們在這樣一類:

public class ColorVal { 
    private String colorValue; 
    private int colorIndex; 

public String getColorValue() { 
    return colorValue; 
} 

public void setColorValue(String colorValue) { 
    this.colorValue = colorValue; 
} 

public int getColorIndex() { 
    return colorIndex; 
} 

public void setColorIndex(int colorIndex) { 
    this.colorIndex = colorIndex; 
} 

}

你可以做這樣的事情:

public class JavaApplication2 extends JFrame { 

JList list; 
String[] listColorNames = new String[10]; 
List<ColorVal> colorValList = new ArrayList<ColorVal>(); 
ColorVal colorVal = new ColorVal(); 
Container con; 

public JavaApplication2() { 
    super("List Source Demo"); 

    colorVal = new ColorVal(); 
    colorVal.setColorIndex(2); 
    colorVal.setColorValue("dos"); 
    colorValList.add(colorVal); 

    colorVal = new ColorVal(); 
    colorVal.setColorIndex(1); 
    colorVal.setColorValue("piso"); 
    colorValList.add(colorVal); 


    //add your other colors 
    con = getContentPane(); 
    con.setLayout(new FlowLayout()); 

    for (int i = 0; i < colorValList.size(); i++) { 
     listColorNames[i] = colorValList.get(i).getColorValue(); 
    } 

    list = new JList(listColorNames); 

    list.setSelectedIndex(0); 
    list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
    con.add(new JScrollPane(list)); 
    list.addListSelectionListener(new ListSelectionListener() { 
     public void valueChanged(ListSelectionEvent e) { 
      System.out.println(colorValList.get(list.getSelectedIndex()).getColorIndex()); //do what you want 
     } 
    }); 
    setSize(200, 200); 
    setVisible(true); 
    //setSizable(false); 
} 

public static void main(String[] args) { 

    JavaApplication2 test = new JavaApplication2(); 
    test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

}

利用java對象和類。