1

在我制作的每一个 JList 上......我必须在任何 JList 出现之前点击它。它就像......隐形但仍然存在......直到我点击它......

我已经尝试过list.setVisible(true)……但没有运气。:\ 帮助?是的,我尝试了 Javadoc、Google 和 SO 搜索。>_< 我从来没有遇到过这样的问题。

代码:

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

public class inventory extends JApplet implements MouseListener {

public static String newline;
public static JList 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 JList(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) {

    }
}
4

3 回答 3

2

或者,如果您想覆盖绘制方法,请将其替换为:

public void paint(Graphics g) {
   super.paint(g);
   // your code
}
于 2010-07-17T06:25:26.700 回答
1

您必须从代码中删除这部分:

public void paint(Graphics g) {

}

基本上你的问题是你用一个空方法覆盖了paint方法。这就是为什么您的列表在开始时没有正确显示的原因。

于 2010-07-17T06:10:29.627 回答
1

您可以在方法this.setVisible(true);的末尾添加行,init()例如

list.addMouseListener(this);

list.setVisible(true);
this.setVisible(true);
于 2011-11-30T21:05:52.630 回答