2010-07-17 1 views
1

내가 만든 모든 JList에서 ... JList 중 일부가 표시되기 전에 해당 항목을 클릭해야했습니다. ... 보이지 않는 것처럼 보이지만 여전히 ... 클릭했을 때 ...자바 JList가 나타나지 않습니다

나는 list.setVisible(true)과 같은 것을 시도했지만 ... 행운이 없습니다. : \ Help? 네, Javadoc, Google 및 SO Search를 사용해 보았습니다. > _ < 이런 문제가 발생하지 않았습니다.

코드 :

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

아니면 페인트 메소드를 오버라이드 (override) 할 경우,로 대체 : 당신은

list.addMouseListener(this); 

list.setVisible(true); 
this.setVisible(true); 
같은 init() 방법의 끝에 this.setVisible(true); 라인을 추가 할 수 있습니다
public void paint(Graphics g) { 
    super.paint(g); 
    // your code 
} 
1

당신은 당신의 코드에서이 부분을 삭제해야합니다 :

public void paint(Graphics g) { 

} 

Basicly 문제는 빈 메소드로 paint 메소드를 덮어 있다고했다. 그래서 귀하의 목록이 처음에 제대로 표시되지 않았습니다.

1