java - 尝试使用JButton

标签 java swing compiler-errors jbutton cannot-find-symbol

我试图在同一包中的两个不同的.java文件中使用JButton组件。当我尝试从同一程序包中的两个不同的Java文件中编译代码时,它显示了编译器错误。当我尝试将主类移至与LoginScreen.java相同的文件时,我可以毫无问题地运行代码。我试图理解为什么如果主程序在同一个.java文件中的话代码会起作用。但是当主类在同一包中的单独文件中时,则不会编译。

这是我的代码:
LoginScreen

package PasswordLockbox;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class LoginScreen extends JFrame
{
public JButton submit;
public JButton user;

public LoginScreen()
{
super("Password Lockbox");
setLayout(new FlowLayout());

submit = new JButton("Submit");
add(submit);

user = new JButton("Create new user");
add(user);

HandlerClass handler = new HandlerClass();
submit.addActionListener(handler);
user.addActionListener(handler);



}

private class HandlerClass implements ActionListener
{

    @Override
    public void actionPerformed(ActionEvent event){
    JOptionPane.showMessageDialog(null,String.format("%s", event.getActionCommand()));
    }
}
}
PasswordLockbox
package PasswordLockbox;
import javax.swing.JFrame;
/**
 *
 * @author xxx
 */
public class PasswordLockbox {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // TODO code application logic here
    LoginScreen log = new LoginScreen();
    log.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    log.setSize(500,400);
    log.setVisible(true);
}

}

当我尝试编译代码时,出现以下错误:
javac PasswordLockbox.java
PasswordLockbox.java:19: error: cannot find symbol
        LoginScreen object;
        ^
  symbol:   class LoginScreen
  location: class PasswordLockbox
PasswordLockbox.java:20: error: cannot find symbol
        object = new LoginScreen();
                     ^
  symbol:   class LoginScreen
  location: class PasswordLockbox
2 errors

最佳答案

首先,您实际上并没有运行代码,而是使用javac对其进行编译。
而且,如果您选择仅编译PasswordLockbox.java,则编译器必须知道可以在哪里找到依赖的类PasswordLockbox.LoginScreen
因此,要解决此问题,应使用以下命令来编译所有类:

project>javac PasswordLockbox/*.java

请注意,在这种情况下,您将在存放.class文件的同一目录中获取所有*.java文件,因此建议使用参数-d放置已编译的类

然后,您可以使用java命令运行您的程序,现在您需要使用-cp参数(可选)提供类路径,并使用标准的类名(即包括包名):
project>java -cp PasswordLockbox; PasswordLockbox.PasswordLockbox 

例如,如果您切换到PasswordLockbox目录。您将必须使用以下命令:
project/PasswordLockbox>java -cp ..; PasswordLockbox.PasswordLockbox 

使用另一个目录编译类的示例:
project>javac -d classes PasswordLockbox/*.java
project>java -cp classes PasswordLockbox.PasswordLockbox

关于java - 尝试使用JButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61579242/

相关文章:

java - 在我的类(class)中将 super() 或 this() 放在哪里

Java,如何在屏幕上绘制矩形变量

java - Android - 颜色形式%

java - 是否可以在 JFrame 中包含 "movable"/"draggable"组件,如 JButtons、JTextFields?

java - SwingWorker的execute()方法似乎没有做任何事情

java - 检索 java swing JFrame 图标

java - 用标签替换每个单词

java - 同步 map 内的集合

java json模式验证相对路径不起作用(找不到URI)

C++ - 模板类、头文件和重复错误