我一直试图解决这个问题,我已经在不同的程序中运行它,所以它肯定在代码中.可能也很简单.错误说
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