Hello,
I'm reading the book JAVA How To Program and I'm trying to implement a GUI program. An example from the book. And when I'm trying to compile the code I get an error message for my event handler. Here is the code:
Code:
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class TextFieldFrame extends JFrame
{
private JTextField jTextField1; // text field with set size
private JTextField jTextField2; // text field constructed with text
private JTextField jTextField3; // text field with text and size
private JPasswordField jPasswordField1; // password field with text
// TextFieldFrame constructor adds jTextFields to JFrame
public TextFieldFrame()
{
super("Testing JTextField and JPasswordField");
setLayout(new FlowLayout()); // set frame layouts
// construct textfield with 10 columns
jTextField1 = new JTextField(10);
add(jTextField1); // adds the textfield to JFrame
// construct textfield with default text
jTextField2 = new JTextField("Enter text here");
add(jTextField2);
// construct textfield with default text and 21 columns
jTextField3 = new JTextField("Uneditable text filed", 21);
jTextField3.setEditable(false); // disable editing
add(jTextField3);
// construct passwordtextfield with default text
jPasswordField1 = new JPasswordField("Hidden text");
add(jPasswordField1);
// register event handlers
TextFieldHandler handler = new TextFieldHandler();
jTextField1.addActionListener(handler);
jTextField2.addActionListener(handler);
jTextField3.addActionListener(handler);
jPasswordField1.addActionListener(handler);
// private inner class for event handling
private class TextFieldHandler implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
String string = ""; // declare string to display
// user pressed Enter on JTextField jTextFiled1
if (event.getSource() == jTextField1)
{
string = String.format("jTextFiled1: %s", event.getActionCommand());
}
// user pressed Enter on JTextField jTextFiled2
else if (event.getSource() == jTextField2)
{
string = String.format("jTextFiled2: %s", event.getActionCommand());
}
// user pressed Enter on JTextField jTextFiled3
else if (event.getSource() == jTextField3)
{
string = String.format("jTextFiled3: %s", event.getActionCommand());
}
// user pressed Enter on JPasswordField jPasswordField1
else if (event.getSource() == jPasswordField1)
{
string = String.format("jPasswordField1: %s", new String(jPasswordField1.getPassword()));
}
// display jTextField Content
JOptionPane.showMessageDialog(null, string);
}
}
}
}
And here is the error message:
Code:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
TextFieldHandler cannot be resolved to a type
TextFieldHandler cannot be resolved to a type
Illegal modifier for the local class TextFieldHandler; only abstract or final is permitted
at TextFieldFrame.<init>(TextFieldFrame.java:41)
at TextFieldTest.main(TextFieldTest.java:8)
And the code of my main class but I don't think is necessary:
Code:
import javax.swing.JFrame;
public class TextFieldTest
{
public static void main(String[] args)
{
TextFieldFrame textFieldFrame = new TextFieldFrame();
textFieldFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
textFieldFrame.setSize(350, 100);
textFieldFrame.setVisible(true);
}
}
and the code at lines indicated by the compiler as error code:
Code:
at TextFieldFrame.<init>(TextFieldFrame.java:41)
TextFieldHandler handler = new TextFieldHandler();
==================================================
at TextFieldTest.main(TextFieldTest.java:8)
TextFieldFrame textFieldFrame = new TextFieldFrame();
Anyone seeing what is going wrong? I just copied the code from the book! Seems very strange.