こんにちは、みんなこのサイトを何年もの間潜んでいますが、この問題に遭遇し、どこでも解決策を見つけることができません...
インナークラスにアクションリスナーがいて、応答しません...皆さんが私の初心者のコーディングを調べて、あなたの考えを確認できる可能性はありますか?
申し訳ありませんが、ここには非常に多くのコードがあります。問題が発生しているのは、「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());
}
}
}