你好所有人都在使用这个网站多年作为潜伏者,但遇到这个问题,无法在任何地方找到解决方案......
我在内部类中有actionlistener,它只是不会回应...你们有什么机会可以查看我的初学者编码,看看你的想法?
抱歉,这里有如此多的代码我唯一有点麻烦的是' AddPet'班级及其内部班级' AddEle'和System.exit方法。当窗口选择宠物类型对话框'打开这些按钮都不会起作用...希望我拥有所有的术语,因为我完全是自学而且刚刚开始。
感谢您的时间
涡
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());
}
}
}
答案 0 :(得分:1)
您正在将动作侦听器添加到未添加到框架的按钮(您执行添加的按钮是新实例,并且没有动作侦听器)
尝试:
content.add(Ele);
content.add(exitButton);
AddPet
中的