2011-03-22 68 views
0

我這裏返工我的代碼,我得到了以下錯誤:ActionListener的錯誤

Exception in thread "main" java.lang.Error: 

Unresolved compilation problem:  

The method addActionListener(new ActionListener(){}) is undefined for the type Component 
at SwimCalc.createCustomers(SwimCalc.java:87) 
at SwimCalc.<init>(SwimCalc.java:29) 
at SwimCalc.main(SwimCalc.java:275) 

代碼:Component

import java.awt.*; 
import javax.swing.*; 
import javax.swing.text.JTextComponent; 
import java.awt.event.*; 
import java.util.*; 
import java.io.*; 

public class SwimCalc extends JFrame implements ActionListener{ 
private JTabbedPane jtabbedPane; 
private JPanel General; 
private JPanel Pools; 
private JPanel HotTub; 
private JPanel Customers; 
private JPanel Contractors; 

JTextField lengthTextPool, widthTextPool, depthTextPool, volumeTextPool, 
lengthTextHotTub, widthTextHotTub, depthTextHotTub, volumeTextHotTub; 

JTextArea NameTextCustomers, ExistTextCustomers, NameTextContractors, ExistTextContractors; 

public SwimCalc(){ 
setTitle("Volume Calculator"); 
setSize(300, 200); 

JPanel topPanel = new JPanel(); 
topPanel.setLayout(new BorderLayout()); 
getContentPane().add(topPanel); 

createCustomers(); 

jtabbedPane = new JTabbedPane(); 
jtabbedPane.addTab("General", General); 
jtabbedPane.addTab("Pool", Pools); 
jtabbedPane.addTab("Hot Tub", HotTub); 
jtabbedPane.addTab("Customers", Customers); 
jtabbedPane.addTab("Contractors", Contractors); 
topPanel.add(jtabbedPane, BorderLayout.CENTER); 
       } 

/*  CREATE CUSTOMERS  */ 

public Container createCustomers(){ 
    Customers = new JPanel(); 
    Customers.setLayout(null); 

    NameTextCustomers = new JTextArea(); 
    NameTextCustomers.setBounds(10, 10, 350, 150); 
    NameTextCustomers.setLineWrap(true); 
    Customers.add(NameTextCustomers); 

    JButton Exit = new JButton("Exit"); 
    Exit.setBounds(30,170,80,20); 
    Exit.addActionListener(this); 
    Exit.setBackground(Color.white); 
    Customers.add(Exit); 

    JButton AddCustomers = new JButton("Add Customer"); 
    AddCustomers.setBounds(130,170,120,20); 
    AddCustomers.setBackground(Color.white); 
    Customers.add(AddCustomers); 

    JButton Refresh = new JButton("Refresh"); 
    Refresh.setBounds(260,170,80,20); 
    Refresh.setBackground(Color.white); 
    Customers.add(Refresh); 

    ExistTextCustomers = new JTextArea(); 
    ExistTextCustomers.setBounds(10, 200, 350, 60); 
    ExistTextCustomers.setLineWrap(true); 
    Customers.add(ExistTextCustomers); 

    new Customer("Customer"); 

; 
Container custPanel; 
final Component custArea; 
custPanel.add(custArea); 
Component addCustomer; 
custPanel.add(addCustomer); 

Component custRefButton; 
custPanel.add(custRefButton); 
final Component custMessage; 
custPanel.add(custMessage); 
((AbstractButton) custRefButton).setMnemonic('R'); 

custRefButton.addActionListener(new ActionListener() 
{ 
public void actionPerformed(ActionEvent e) 
{ 
((JTextComponent) custMessage).setText(""); 
try 
{ 
File custOpen = new File("customer.txt"); 
FileReader custAreaIn = new FileReader(custOpen); 
((JTextComponent) custArea).read(custAreaIn, custOpen.toString()); 
((JTextComponent) custMessage).setText("The file exists and can be read from."); 
} 
catch (IOException e3){ 
((JTextComponent) custMessage).setText("The file could not be read. " + e3.getMessage()); 
} 
} 
}); 
return custPanel; 
} 

class Customer extends JFrame 
{ 
private String[] states = {"AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", 
"FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", 
"MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", 
"NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", 
"TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY"}; 
private JComboBox StateList = new JComboBox(states); 
private JTextField NameText = new JTextField(25); 
private JTextField AddressText = new JTextField(25); 
private JTextField CityText = new JTextField(25); 
private JTextField ZipText = new JTextField(9); 
private JTextField PhoneText = new JTextField(10); 
private JTextField PopMessageText = new JTextField(30); 
private static final long serialVersionUID = 1L; 

private AddCustButtonHandler addCusHandler = new AddCustButtonHandler(); 

public Customer(String who) 
{ 
popUpWindow(who); 
} 
public void popUpWindow(final String who) { 

final JFrame popWindow; 
popWindow = new JFrame(who); 
popWindow.setSize(425, 350); 
popWindow.setLocation(100, 100); 
popWindow.setVisible(true); 
setDefaultCloseOperation(EXIT_ON_CLOSE); 

Container c = new Container(); 

popWindow.add(c); 

c.setLayout(new FlowLayout()); 

JPanel one = new JPanel(); 
JPanel two = new JPanel(); 
JPanel three = new JPanel(); 
JPanel four = new JPanel(); 
JPanel five = new JPanel(); 
JPanel six = new JPanel(); 

one.add(new JLabel(who + " Name ")); 
one.add(NameText); 
two.add(new JLabel("Address ")); 
two.add(AddressText); 
three.add(new JLabel("City ")); 
three.add(CityText); 
four.add(new JLabel("State ")); 
StateList.setSelectedIndex(0); 
four.add(StateList); 
four.add(new JLabel("ZIP")); 
four.add(ZipText); 
four.add(new JLabel("Phone")); 
four.add(PhoneText); 
JButton addwho = new JButton("Add " + who); 
addwho.setMnemonic('A'); 
JButton close = new JButton("Close"); 
close.setMnemonic('C'); 
JButton deleteFile = new JButton("Delete File"); 
deleteFile.setMnemonic('D'); 
five.add(addwho); 
five.add(close); 
five.add(deleteFile); 
PopMessageText.setEditable(false); 
PopMessageText.setHorizontalAlignment(JTextField.CENTER); 

six.add(PopMessageText); 
c.add(one); 
c.add(two); 
c.add(three); 
c.add(four); 
c.add(five); 
c.add(six); 

deleteFile.setToolTipText("Delete File"); 
addwho.setToolTipText("Add "+ who); 
close.setToolTipText("Close"); 

if (who == "Customer") 
addwho.addActionListener(addCusHandler); 
close.addActionListener(new ActionListener() { 
public void actionPerformed(ActionEvent e) { 
NameText.setText(""); 
AddressText.setText(""); 
CityText.setText(""); 
ZipText.setText(""); 
PhoneText.setText(""); 
PopMessageText.setText(""); 
popWindow.dispose(); 
} 
}); 
deleteFile.addActionListener(new ActionListener() { 
public void actionPerformed(ActionEvent e) { 
PopMessageText.setText(""); 
if (who == "Customer") { 
File file = new File("Customer.txt"); 
boolean cusFileDeleted = file.delete(); 
if (cusFileDeleted) { 
PopMessageText 
.setText("Customer file has been deleted"); 
} else { 
PopMessageText 
.setText("There was an erron in deleting file"); 
} 
} 
} 
}); 
} 
class AddCustButtonHandler implements ActionListener { 
public void actionPerformed(ActionEvent addCusHandler) { 
int StateIndex; 
try { 
File file = new File("Customer.txt"); 

boolean success = file.createNewFile(); 

if (success) { 
PopMessageText 
.setText("Customer.txt file created file added"); 
} else if (file.canWrite()) { 
PopMessageText 
.setText("Writing data to Customer.txt, file added"); 
} else { 
PopMessageText.setText("Cannot create file: Customer.txt"); 
} 
try { 
FileWriter fileW = new FileWriter("Customer.txt", true); 
fileW.write(NameText.getText()); 
fileW.write(","); 
fileW.write(AddressText.getText()); 
fileW.write(","); 
fileW.write(CityText.getText()); 
fileW.write(","); 
StateIndex = StateList.getSelectedIndex(); 
fileW.write(states[StateIndex]); 
fileW.write(","); 
fileW.write(ZipText.getText()); 
fileW.write(","); 
fileW.write(PhoneText.getText()); 
fileW.write("\r\n"); 
fileW.close(); 
PopMessageText.setText("A new Customer has been added!"); 

FileReader fileR = new FileReader("Customer.txt"); 
BufferedReader buffIn = new BufferedReader(fileR); 

String textData = buffIn.readLine(); 
buffIn.close(); 
} 
catch (IOException e1) { 
JOptionPane.showMessageDialog(null, e1.getMessage(), "ERROR", 2); 
} 
NameText.setText(""); 
AddressText.setText(""); 
CityText.setText(""); 
ZipText.setText(""); 
PhoneText.setText(""); 
} catch (IOException e1) { 
} 

} 
} 
} 

public static void main(String[] args){ 
JFrame frame = new SwimCalc(); 
frame.setSize(380, 350); 
frame.setVisible(true); 
} 
} 
+0

你真的應該看看[這裏](http://download.oracle.com/javase/tutorial/java/nutsandbolts/variables.html)和命名約定讀了。還谷歌「代碼縮進」。它會幫助我們幫助你。 – 2011-03-23 16:30:31

回答

1

類沒有定義的方法addActionListener()。通常,這將是對AbstractButton/JButton/Button類的方法。

0

custRefButton僅限於ComponentaddActionListener僅限於AbstractButton

順便說一句:你永遠不會初始化custRefButton