2010-07-17 34 views
1

在我製作的每個JList上......我必須先點擊它才能顯示任何JList。它就像...隱身但仍然存在...直到我點擊它...Java 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) { 

    } 
} 

回答

2

或者,如果你想覆蓋paint方法,將其替換爲:

public void paint(Graphics g) { 
    super.paint(g); 
    // your code 
} 
1

必須刪除這部分從你的代碼:

public void paint(Graphics g) { 

} 

Basicly您的問題是,你是覆蓋一個空方法paint方法。這就是爲什麼你的列表在開始時沒有正確顯示。

1

您可以在init()方法像

list.addMouseListener(this); 

list.setVisible(true); 
this.setVisible(true); 
結尾添加 this.setVisible(true);