【问题标题】:Uncompilable source code Error?无法编译的源代码错误?
【发布时间】:2014-07-17 20:34:52
【问题描述】:

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

消息:

线程“主”java.lang.RuntimeException 中的异常:无法编译的源代码 - 错误的符号类型:javax.swing.JPanel.add 在 login.Login.frame(Login.java:52) 在 login.Login.(Login.java:24) 在 login.Login.main(Login.java:103) 构建成功(总时间:16 秒)

还有我的代码

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)//``
    }

}

【问题讨论】:

  • 不要尝试运行不可编译的代码。当您尝试编译程序时,您看到了哪些错误?
  • 我看到这条消息:线程“main”中的异常 java.lang.RuntimeException:无法编译的源代码 - 错误的符号类型:javax.swing.JPanel.add at login.Login.frame(Login.java :52) 在 login.Login.(Login.java:24) 在 login.Login.main(Login.java:103) 构建成功(总时间:16 秒)

标签: java swing


【解决方案1】:
  1. 使用更好的变量名称,以便阅读您的代码的人(包括未来的您)可以知道发生了什么。

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

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

【讨论】:

    【解决方案2】:

    您正在尝试向 JPanel 添加一个数字,这对 Java 编译器(或对我而言)没有意义。你到底想用myJPanel.add(1) 做什么?

    【讨论】:

      【解决方案3】:

      您需要输入'l' ('L') 而不是'1' -one

      p.add(l);
      p.add(l1);
      

      因为你有以下标签要添加

      JLabel l = new JLabel("Username:");
      JLabel l1 = new JLabel("Password:");
      

      【讨论】:

        【解决方案4】:

        您必须将Component 添加到Panel

        如果您想添加号码,请尝试add(new JLabel("1"))

        【讨论】:

        • 是的,您应该在 Swing 应用程序中使用 JLabel,在 AWT 应用程序中使用 Label。我的错。
        猜你喜欢
        • 1970-01-01
        • 2015-07-07
        • 1970-01-01
        • 1970-01-01
        • 2016-05-08
        • 2021-05-22
        • 2012-06-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多