java - JLabels 的鼠标监听器

标签 java swing jlabel mouselistener

卡在这里好几天了......这里出了什么问题,请告诉

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();
    }
}

最佳答案

看起来您的代码在这一行出错了

p1.add(l[i]);

你在哪里初始化你的数组l?此外,您只需设置该数组的前 n 条记录,其中 n 是 ResultSet 中的行数。但稍后添加数组的前 500 个元素。您是否从 SQL 查询中获得至少 500 个元素?

关于java - JLabels 的鼠标监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18083279/

相关文章:

Java Swing - 为什么 JComponent 不显示?

java - JLabels 不显示

java - 将 JLabel 溢出到另一个 JLabel

java - Bulkloader 导入整数列表

java - 从 PreferenceActivity 返回后屏幕变暗并需要额外按下后退按钮

java - java编译中未经检查或不安全的操作错误?

java - 使用 Akka Actor 的文件操作

java - 使用 Swing 在 Java 中绘制多个矩形

java - Java swing 代码中的问题

java - JLabel显示倒计时,java