java - 无法编译的源代码错误?

标签 java swing

当我运行程序时,我收到此消息。我该如何纠正这个错误?我通过评论标记了消息中所说的那一行!

消息:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: javax.swing.JPanel.add at login.Login.frame(Login.java:52) at login.Login.(Login.java:24) at login.Login.main(Login.java:103) BUILD SUCCESSFUL (total time: 16 seconds)

和我的代码

package login;
import javax.swing.*;
import java.awt.event.*;
import java.sql.*;


public class Login 
{

    Connection con;
    Statement st;
    ResultSet rs; 

    JFrame f = new JFrame("User login");
    JLabel l = new JLabel("Username:");
    JLabel l1 = new JLabel("Password:");
    JTextField t = new JTextField(10);
    JTextField t1 = new JTextField(10);
    JButton b = new JButton("login");


    public Login()
    {
        connect();
        frame(); //this line:at login.Login.<init>(Login.java:24)//

    }

    public void connect()
    {

        try 
        {
            String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
            Class.forName(driver);

            String db = "jdbc:odbc:login";
            con = DriverManager.getConnection(db);   
            st = con.createStatement();
        }
        catch(Exception ex)
        {
        }
    }

    public void frame()
    {
        f.setSize(600,400);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);

        JPanel p = new JPanel();
        p.add(1);//this line:at login.Login.frame(Login.java:52)//
        p.add(t);
        p.add(11);
        p.add(t1);
        p.add(b);

        f.add(p);

        b.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                try
                {
                    String user = t.getText().trim();
                    String pass = t1.getText().trim();  

                    String sql = "select user,pass from login where user = '"+user+"'and pass = '"+pass+"'";
                    rs = st.executeQuery(sql);

                    int count = 0;
                    while(rs.next())
                    {
                        count = count + 1;
                    }

                    if(count == 1)
                    {
                        JOptionPane.showMessageDialog(null,"User Found,Access Generated!");
                    }
                    else if(count > 1)
                    {
                        JOptionPane.showMessageDialog(null, "Duplicate User,Access Denied!");
                    }
                    else
                    {
                        JOptionPane.showMessageDialog(null,"User not Found");
                    }
                }
                catch(Exception ex)
                {
                }

            }
        });
    }

    public static void main(String[] arg) 
    {
        new Login(); //this line:at login.Login.main(Login.java:103)//``
    }

}

最佳答案

  1. 使用更好的变量名称,以便阅读您代码的人(包括 future 的您)可以知道发生了什么。

  2. 正如 Hovercraft Full Of Eels 在他们的评论中所说,不要运行无法编译的代码。编译器错误...不完全是您的 friend ,但它们会帮助您。

  3. JPanel 有多个 .add() 方法,但没有一个方法只接受 int 作为参数,这就是您在 login.Login.frame(Login.java:52) 处所拥有的,然后再次从那里向下两行,这就是导致您的代码无法编译的原因。我认为你实际上指的是 l (el) 和 l1 (el one) 而不是 1 (一) 和 11 (十一),这反馈到上面的 #1:使用更好的变量名称!

关于java - 无法编译的源代码错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24802670/

相关文章:

java - 组件必须不为空 - Java SWING

java - Java 中用于标识网络消息的连续常量

java - 有条件地禁用 jButton

java - 为什么 JFrame 颜色会通过更改内容 Pane 颜色来改变?

java - 我不明白为什么我的代码可以在终端和 Eclipse 中正确运行,但不能单独作为 jar 文件运行

java - ImageIcon引用麻烦

java - 简单的线程池实现

java - 安卓自定义按钮

java - 访问器方法和 Java 反射

java - 在 Java Swing GUI 中运行 .bat 不起作用