我一直试图解决这个问题,我已经在不同的程序中运行它,所以它肯定在代码中.可能也很简单.错误说
Password2.java:90: error: cannot find symbol
if(pw.equals(password))
^
symbol: variable password
location: class Password2.EnterButtonHandler
1 error
这是代码:
// Password1.java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Password2 extends JFrame // inherits from the JFrame class { // static final variables to hold frame dimensions (in pixels) private static final int WIDTH = 400; private static final int HEIGHT = 120; //declare labels,fields,buttons,etc. private JLabel enterLabel,validLabel,resultLabel; private JTextField pwTextField; private JButton enterB,clearB; private EnterButtonHandler ebHandler; private ClearButtonHandler cbHandler; public Password2() // constructor defines frame { setTitle( "Password Checker" ); // set the title of the frame setSize( WIDTH,HEIGHT ); // set the frame size // prepare the container Container pane = getContentPane(); GridLayout aGrid = new GridLayout( 3,2,5,5 ); // create a 3 row 2 column layout pane.setLayout( aGrid ); // set the layout for the frame String password = "hello"; //instantiate JLabels enterLabel = new JLabel("Enter Password: "); validLabel = new JLabel("Validation: "); resultLabel = new JLabel(""); //instantiate text fields pwTextField = new JPasswordField( 30 ); //instantiate buttons enterB = new JButton("Enter"); clearB = new JButton("Clear"); //initialize button handler ebHandler = new EnterButtonHandler(); enterB.addActionListener(ebHandler); //initialize button handler cbHandler = new ClearButtonHandler(); clearB.addActionListener(cbHandler); pane.add(enterLabel); pane.add(pwTextField); pane.add(validLabel); pane.add(resultLabel); pane.add(enterB); pane.add(clearB); //calls center frame method centerFrame( WIDTH,HEIGHT ); }// end constructor //methood to center GUI on screen public void centerFrame( int frameWidth,int frameHeight) { //create toolkit object Toolkit aToolkit = Toolkit.getDefaultToolkit(); //create a dimension object with user screen information Dimension screen = aToolkit.getScreenSize(); //assign x,y position of upper left corner of frame int xUpperLeft = ( screen.width - frameWidth ) / 2; int yUpperLeft = ( screen.height - frameHeight ) / 2; //method to position frame on user's screen setBounds( xUpperLeft,yUpperLeft,frameWidth,frameHeight ); } private class EnterButtonHandler implements ActionListener { public void actionPerformed(ActionEvent e) { String pw = pwTextField.getText(); if(pw.equals(password)) { resultLabel.setText("Password Accepted"); pwTextField.setText(""); } else { resultLabel.setText("Password Rejected"); pwTextField.setText(""); } } } private class ClearButtonHandler implements ActionListener { public void actionPerformed(ActionEvent e) { resultLabel.setText(""); pwTextField.setText(""); } } public static void main(String [] args) { JFrame aPassword2 = new Password2(); // create the JFrame object aPassword2.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); aPassword2.setVisible(true); } } // end of class
解决方法
阅读错误消息,喜欢错误消息.
这需要一些练习,但过了一段时间后很容易看到它更清楚:只需阅读下面的粗体文本作为一个句子:)
error: cannot find symbol […]
symbol: variable password
location: [in] class Password2.EnterButtonHandler
该范围/上下文(EnterButtonHandler)中没有命名密码.
快乐的编码.
提示:在不同的范围/上下文中有一个具有相同名称的局部变量…也许它不应该是局部变量?有关详情,请参阅The Java Tutorial: Variables