2013-08-06 14 views
0

....這裏有什麼問題請告訴我的代碼鼠標偵聽困在這裏天的JLabel

Exception in thread "main" java.lang.NullPointerException 
    at java.awt.Container.addImpl(Unknown Source) 
    at java.awt.Container.add(Unknown Source) 
    at contacts3.<init>(contacts3.java:41) 
    at contacts3.main(contacts3.java:75) 

部分---

contacts3() 
{ 
    try 
    { 
     f1=new JFrame(); 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     Connection con=DriverManager.getConnection("jdbc:odbc:login321", "", ""); 
     Statement st=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); 
     String fet="Select * from Contacts"; 
     ResultSet rs=st.executeQuery(fet); 
     int i=0; 
     while(rs.next()) 
     { 
      l[i]=new JLabel(rs.getString(1)); 
      l[i].setFont(ft); 
      i++; 
     } 
    } 
    catch(Exception e) 
    { 
     System.out.println("acccc"); 
     e.printStackTrace();   
    } 
    p1.setLayout(new GridLayout(500,1)); 
    for(int i=0;i<500;i++) 
    { 
     p1.add(l[i]); 
     l[i].addMouseListener(this); 
    } 

    f1.getContentPane().add(p1); 
    f1.setSize(600,300); 
    f1.setVisible(true); 

} 
public void mouseClicked(MouseEvent m) 
{ 
    try 
    { 
     JLabel label=(JLabel)m.getSource(); 
     //new convall(label.getText()); 
     f1.dispose(); 
    } 
    catch(Exception e) 
    { 
     System.out.println("avc"); 
     e.printStackTrace(); 
    } 
} 
+0

你能指出你有什麼異常嗎? – Tala

+1

你正試圖無條件地使用'l [i]',最多可以使用500個。看起來你沒有那麼多。 – kiheru

+0

@kiheru是的,但這不會產生'NullPointerException',這會產生一個'IndexOutOfBoundsException' – BackSlash

回答

2

看起來像你的代碼是示數出來這條線

p1.add(l[i]); 

你在哪裏初始化你的數組l?此外,您只設置該數組的前n個記錄,其中n是ResultSet中的行數。但稍後您將添加數組的前500個元素。你是否從SQL查詢中獲得至少500個元素?

相關問題