我试图在同一包中的两个不同的.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/