您好所有一直在使用這個網站的年齡作爲一個潛伏者,但遇到這個問題,並不能找到任何地方的解決辦法...的Java的ActionListener沒有響應
我有一個內部類,它只是不會迴應的ActionListener ...任何機會你可以看看我的初學者編碼,看看你的想法?
抱歉孤單這麼多代碼在這裏具有是「AddPet」類及其內部類「AddEle」和System.exit方法麻煩的唯一位IM。當窗口「選擇寵物類型對話框」打開時,這些按鈕都不會起作用......希望我擁有所有的術語,就像我完全自學並剛剛起步一樣。
感謝您的時間
渦
package petshopwk1;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.* ;
import javax.swing.*;
import java.util.Scanner;
import javax.swing.JOptionPane ;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.JList;
import java.awt.event.*;
public class CurrentPet2 extends JFrame {
private JButton setName, setDOB, setSold, getName, getDOB, getSold, addPet, changePre, changeNext, exit, setCurrentPet, getFeel;
private JLabel cPetLabel ;
private Shop theShop = new Shop("Brighton");
private JButton exitButton, Ele, MF, Pet;
String temp = "temp" ;
Date dob = new Date();
public Pet CurrentPetObj = new Pet("", "", true, dob) ;
int cPetIndex ;
DefaultListModel model = new DefaultListModel();
public JList list = new JList(model);
public CurrentPet2 (String cTitle)
{
super(cTitle) ;
Pet Alburt = new Pet("Alburt", " 09 APRIL 2009", true) ;
Pet Eddy = new Pet("Eddy", " 13 JANUARY 1982", false) ;
Pet Paul = new Pet("Paul", " 21 DECEMBER 1956", true) ;
Pet Sian = new Pet("Sian", " 11 SEPTEMBER 1988", true) ;
Pet Morrise = new Pet("Morrise", " 26 MARCH 1996", false) ;
Pet Betty = new Pet("Betty", " 31 JANUARY 1962", false) ;
Elephant Ele = new Elephant ("Ele", "13 JANUARY 1982", true, 12) ;
MF NOW = new MF ("NOW", "8 JULY 2012", false, 11, "Rocking") ;
theShop.addPet(0, Alburt);
theShop.addPet(1, Eddy);
theShop.addPet(2, Paul);
theShop.addPet(3, Sian);
theShop.addPet(4, Morrise);
theShop.addPet(5, Betty);
theShop.addPet(6, Ele);
theShop.addPet(7, NOW);
Container contentPane ;
contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
cPetLabel = new JLabel("Current Pet Mode");
setCurrentPet = new JButton("Choose current Pet");
setName = new JButton("Set Name") ;
setDOB = new JButton("Set DOB") ;
setSold = new JButton("Set Sold");
getName = new JButton("Get Name") ;
getDOB = new JButton("Get DOB") ;
getSold = new JButton("Get Sold") ;
addPet = new JButton("Add Pet");
changePre = new JButton("Change to Previous") ;
changeNext = new JButton("Change to Next");
getFeel = new JButton("FEEL?");
exit = new JButton("EXIT");
exit.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent e)
{System.exit(0); }}
);
setCurrentPet.addActionListener(new ChoosePetName());
setName.addActionListener(new setPetName()) ;
setDOB.addActionListener(new setPetDOB());
setSold.addActionListener(new setIsSold());
getName.addActionListener(new getPetName()) ;
getDOB.addActionListener(new getPetDOB());
getSold.addActionListener(new getIsSold());
addPet.addActionListener(new addPet());
getFeel.addActionListener(new printFeel());
list.setListData(Shop.thePets.toArray());
list.validate();
changePre.addActionListener(new changePetPre());
changeNext.addActionListener(new changePetNext());
contentPane.add(setCurrentPet);
contentPane.add(addPet);
contentPane.add(setName);
contentPane.add(setDOB);
contentPane.add(setSold);
contentPane.add(getName);
contentPane.add(getDOB);
contentPane.add(getSold);
contentPane.add(getFeel) ;
contentPane.add(changePre);
contentPane.add(changeNext);
contentPane.add(exit);
contentPane.add(new JScrollPane(list));
list.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent evt)
{
JList list = (JList) evt.getSource();
if (evt.getClickCount() ==2)
{
int cPetIndex = list.locationToIndex (evt.getPoint());
CurrentPetObj = Shop.thePets.get(cPetIndex) ;
JOptionPane.showMessageDialog(CurrentPet2.this, CurrentPetObj + "@ Index " + cPetIndex);
}
}
}
);
setLayout(new FlowLayout());
add(exit);
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
this.setSize(550, 400);
this.setVisible(true);
}
class ChoosePetName implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String cPetSearch = JOptionPane.showInputDialog(null, "Please Eneter Pet to work on...") ;
CurrentPetObj = Shop.findPet(cPetSearch) ;
int cPetIndex = Shop.thePets.indexOf(CurrentPetObj);
list.setSelectedIndex(cPetIndex);
JOptionPane.showMessageDialog(CurrentPet2.this, CurrentPetObj + "@ Index " + cPetIndex);
}
}
class setPetName implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String nName = JOptionPane.showInputDialog(null, "Please input new Pet name...");
CurrentPetObj.setName(nName);
JOptionPane.showMessageDialog(CurrentPet2.this, CurrentPetObj) ;
}
}
class setPetDOB implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String nDOB = JOptionPane.showInputDialog(null, "Please input new Pet DOB... (in format 26 MARCH 1996");
CurrentPetObj.setDOB(nDOB) ;
JOptionPane.showMessageDialog(CurrentPet2.this, CurrentPetObj);
}
}
class setIsSold implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
boolean s = Boolean.parseBoolean(JOptionPane.showInputDialog(null, "Please input if new Pet is sold..."));
CurrentPetObj.setIsSold(s);
JOptionPane.showMessageDialog(CurrentPet2.this, CurrentPetObj.toString());
}
}
class getPetName implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(CurrentPet2.this, CurrentPetObj.getName());
}
}
class getPetDOB implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(CurrentPet2.this, CurrentPetObj.getDOB()) ;
}
}
class getIsSold implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(CurrentPet2.this, CurrentPetObj.getIsSold());
}
}
-----------------------------------------------------------------------
its just between this and the following line i have the problem. the actionListener responds fine in the earlier class but just cant get it working with the AddPet class and therefore wont call the system.exit or AddEle...
任何幫助將是巨大的:)
***class AddPet implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Container contentPane ;
contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
JFrame f = new JFrame("Choose pet type dialog");
f.setSize(300, 100);
Container content = f.getContentPane();
Ele = new JButton("Add Elephant");
exitButton = new JButton("EXIT");
exitButton.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent L)
{System.exit(0); }}
);
Ele.addActionListener(new AddEle());
content.setLayout(new FlowLayout());
content.add(new JButton("Add Elephant"));
content.add(new JButton("Add Pet"));
content.add(new JButton("EXIT"));
contentPane.add(Ele);
contentPane.add(exit);
f.setVisible(true);
contentPane.add(MF);
contentPane.add(Pet);
}
}
class AddEle implements ActionListener
{
public void actionPerformed(ActionEvent L)
{
String nName = JOptionPane.showInputDialog(null, "Please Enter new Pet name...") ;
String nDate = JOptionPane.showInputDialog(null, "Please input new pet DOB (in format 20 MARCH 2001");
boolean s = Boolean.parseBoolean(JOptionPane.showInputDialog(null, "Please input if sold or not? (true/false"));
int nSize = Integer.parseInt(JOptionPane.showInputDialog(null, "Please input Elephant SIZE..."));
cPetIndex = Integer.parseInt(JOptionPane.showInputDialog(null, "Please input INDEX to place new Pet..."));
Pet CurrentPetObj = new Elephant(nName, nDate, s, nSize) ;
theShop.addPet(cPetIndex, CurrentPetObj) ;
list.setListData(Shop.thePets.toArray());
model.setElementAt(CurrentPetObj, cPetIndex);
JOptionPane.showMessageDialog(CurrentPet2.this, CurrentPetObj + " @ Index " + cPetIndex);
}
}
}***
class changePetPre implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
int cPetIndex = Shop.thePets.indexOf(CurrentPetObj);
--cPetIndex;
CurrentPetObj = Shop.thePets.get(cPetIndex);
list.setSelectedIndex(cPetIndex);
JOptionPane.showMessageDialog(CurrentPet2.this, "Current Pet is now == " + CurrentPetObj + "@ Index " + cPetIndex);
}
}
class changePetNext implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
int cPetIndex = Shop.thePets.indexOf(CurrentPetObj);
++cPetIndex;
CurrentPetObj = Shop.thePets.get(cPetIndex);
list.setSelectedIndex(cPetIndex);
JOptionPane.showMessageDialog(CurrentPet2.this, "Current Pet is now == " + CurrentPetObj + "@ Index " + cPetIndex);
}
}
class printFeel implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(CurrentPet2.this, "Current feel is now == " + MF.getFeel());
}
}
}
請包括[SSCCE(HTTP://www.sscce。組織)展示問題。 – user1329572 2012-07-17 12:47:11
哪部分不工作? (什麼按鈕等) – 2012-07-17 12:47:40
它從中間窗口的所有作品appart,類AddPet打開,但沒有按鈕(退出,Ele例如)將工作,所以它不會調用AddEle類...我有一些感覺理由動作監聽者不能使用這種方式/ IM做得不對... – 2012-07-17 12:51:21