2010-07-17 13 views
2

OK, donc je fais un ArrayList dans une liste (awt) et j'obtiens les erreurs suivantes lors de la compilation.Java Applet - Erreur de liste

C:\Users\Dan\Documents\DanJavaGen\ArrayList_INV.java:29: cannot find symbol 
symbol : constructor List(java.lang.Object[]) 
location: class java.awt.List 
     list = new java.awt.List(arr.toArray()); 
      ^
C:\Users\Dan\Documents\DanJavaGen\ArrayList_INV.java:50: cannot find symbol 
symbol : method getSelectedValue() 
location: class java.awt.List 
     System.out.println("You have selected: " + list.getSelectedValue()); 
                ^
2 errors 

Code:

import java.applet.Applet; 
import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 
import java.util.ArrayList; 
import java.io.*; 
import java.util.*; 

public class ArrayList_INV extends JApplet implements MouseListener { 

public static String newline; 
public static java.awt.List list; 
int gold = 123; 

    public void init() { 



ArrayList<String> arr = new ArrayList<String>(); 
arr.add("Hatchet"); 
arr.add("Sword"); 
arr.add("Shield"); 
arr.add(gold + " Gold"); 
System.out.println("You have " + arr.size() + " items in your inventory."); 
showInventory(arr); 



     list = new java.awt.List(arr.toArray()); 

     add(list); 

     list.addMouseListener(this); 

     list.setVisible(true); 

    } 

public static void showInventory (ArrayList<String> theList) { 
for (int i = 0; i < theList.size(); i++) { 
System.out.println(theList.get(i)); 
} 
} 


    public void mousePressed(MouseEvent e) { } 

    public void mouseReleased(MouseEvent e) { 

     System.out.println("You have selected: " + list.getSelectedValue()); 
    } 

    public void mouseEntered(MouseEvent e) { } 

    public void mouseExited(MouseEvent e) { } 

    public void mouseClicked(MouseEvent e) { } 

/** 
    public void paint(Graphics g) { 

    }**/ 
} 

Quel est le problème? Merci.

Répondre

2

Identique Java cannot find symbol in List

Il y a deux questions en jeu ici:

java.awt.List ne dispose pas d'un constructeur qui prend Object []:

list = new List(); 
for (String item : arr) { 
    list.add(item); 
} 

java.awt.List a getSelectedItem() pas getSelectedValue():

Vous pourriez votre ArrayList avec la liste comme suit:

public void mouseReleased(MouseEvent e) { 
    Object index = list.getSelectedItem(); 
    System.out.println("You have selected: " + index); 
} 
+0

Oh, je vois mon erreur maintenant. Au fait, les listes AWT prennent-elles l'habitude de détecter les doubles-clics? J'ai regardé et il a besoin d'un ListModule qui ne prend pas bien avec les listes. : \ – nn2

+0

if (e.getClickCount() == 2): -D – nn2

2

Selon le API docs for java.awt.List, il n'y a pas de constructeur public qui accepte un tableau (ligne 29 dans votre code). Vous pouvez utiliser le constructeur no argument et ajouter vos éléments un par un en utilisant la méthode add().

De plus, vous avez une faute de frappe dans un nom de méthode sur la ligne 50: c'est getSelectedItem(), pas getSelectedValue().