【问题标题】:Java cannot find symbol in ListJava在列表中找不到符号
【发布时间】:2011-03-17 05:22:43
【问题描述】:

好的,所以我从 JList 切换到 List 因为

1.) 它不会与我绘制的图像重叠 2.) 它可以禁用焦点但跟踪选择的内容

无论如何,这是我尝试编译时遇到的错误:

C:\Users\Dan\Documents\DanJavaGen\inventory.java:30: cannot find symbol
symbol  : constructor List(java.lang.Object[])
location: class java.awt.List
        list = new List(arr.toArray());
               ^
C:\Users\Dan\Documents\DanJavaGen\inventory.java:50: cannot find symbol
symbol  : method getSelectedValue()
location: class java.awt.List
        Object index = list.getSelectedValue();
                           ^

代码:

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

public class inventory extends JApplet implements MouseListener {

public static String newline;
public static 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 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) {
        Object index = list.getSelectedValue();
       System.out.println("You have selected: " + index);
    }

    public void mouseEntered(MouseEvent e) { }

    public void mouseExited(MouseEvent e) { }

    public void mouseClicked(MouseEvent e) { }




    public void paint(Graphics g) {

    }
}

【问题讨论】:

    标签: java list arraylist awt


    【解决方案1】:

    这里有两个问题:

    java.awt.List 没有采用 Object[] 的构造函数:

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

    java.awt.List 有 getSelectedItem() 而不是 getSelectedValue():

    您可以使用 List 的 ArrayList 如下:

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

    【讨论】:

      【解决方案2】:
      • 您将同时导入 java.util.List 和 java.awt.List。 现在编译器对你想要哪个感到困惑。有可能混淆。

      • java.awt.List 与 javax.swing.JList 不同,它没有将数组作为参数的构造函数。

      • 另外,你还有一个空的paint() 方法。这是非常错误的。

      【讨论】:

      • 如何同时导入 awt 和 util 列表? :S
      • 更具体的导入 (java.awt.List) 获胜。 mindprod.com/jgloss/import.html
      • @Dan:您有一个import java.util.*,它导入包java.util 中的所有内容,包括java.util.List。但在这种情况下,正如 Alain 指出的那样,java.awt.List 将优先。
      猜你喜欢
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 2015-09-20
      • 1970-01-01
      • 2019-01-08
      • 2014-02-07
      相关资源
      最近更新 更多