2012-07-11 82 views
0

我試過幾種不同的方法來試圖讓這個代碼工作,但沒有一個成功。我有一個ButtonListener連接到兩個不同的按鈕。第一個完美的作品。第二個根本不執行。這是怎麼回事?ButtonListener沒有反應

預先感謝您。

import javax.swing.*; 
import java.util.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.event.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.image.BufferedImage; 
import java.io.*; 
import javax.imageio.*; 
import java.text.NumberFormat; 

public class ClientApp extends JFrame 
{ 
    public static void main(String[] args) 
    { 
     new ClientApp(); 
    } 

    //Declarations so they have scope outside of ClientApp() 
    private JButton switchCard; 
    private JPanel infoPanel; 
    private JPanel mainPanel; 
    private JPanel cartPanel; 
    private JPanel orderingPanel; 
    private JList candyList; 
    private CardLayout cl = new CardLayout(); 
    private CardLayout cl2 = new CardLayout(); 
    private JPanel checkoutPanel; 
    private JButton checkoutButton; 
    private JTextField acidPopsTF; 
    private JTextField bertieBottsTF; 
    private JTextField bloodPopsTF; 
    private JTextField cauldronCakesTF; 
    private JTextField charmChocTF; 
    private JTextField chocoballsTF; 
    private JTextField chocCauldronsTF; 
    private JTextField chocFrogsTF; 
    private JTextField chocWandsTF; 
    private JTextField roachClustersTF; 
    private JTextField crystalPineappleTF; 
    private JTextField droobleGumTF; 
    private JTextField explodeBonbonsTF; 
    private JTextField fizzWhizTF; 
    private JTextField iceMiceTF; 
    private JTextField jellySlugsTF; 
    private JTextField liquorWandsTF; 
    private JTextField pepImpsTF; 
    private JTextField pinkCocoIceTF; 
    private JTextField spindleSpidersTF; 
    private JTextField sugarQuillsTF; 
    private JTextField wizochocTF; 
    private JTextField shockChocTF; 
    private ArrayList cart; 
    private Object[] cartArray; 
    private String CART = "cart"; 
    private String BROWSE = "ordering"; 

    public ClientApp() 
    { 
     this.setSize(750,400); 
     this.setTitle("Honeydukes Muggle Ordering System"); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     ButtonListener bl = new ButtonListener(); 

     //Creating the panels 
     mainPanel = new JPanel(cl2); 
     cartPanel = new JPanel(); 
     orderingPanel = new JPanel(new BorderLayout()); 
     infoPanel = new JPanel(cl); 
     JPanel invntryPanel = new JPanel(new BorderLayout()); 
     checkoutPanel = new JPanel(new BorderLayout()); 


     //Creating the array for the invntryPanel Jlist 

     String[] candy = {"Acid Pops", "Bertie Bott's Every Flavour Beans", 
          "Blood-flavoured Lollipops", 
          "Cauldron Cakes", "Charm Choc", 
          "Chocoballs", "Chocolate Cauldrons", 
          "Chocolate Frogs","Chocolate Wands", 
          "Cockroach Clusters", "Crystallised Pineapple", 
          "Drooble's Best Blowing Gum", "Exploding Bonbons", 
          "Fizzing Whizbees", "Ice Mice", 
          "Jelly Slugs", "Liquourice Wands", 
          "Pepper Imps", "Pink Coconut Ice", 
          "Shock-o-Choc", "Splindle's Lick'O'Rish Spiders", 
          "Sugar Quills", "Wizochoc"}; 
     candyList = new JList(candy); 
     candyList.setVisibleRowCount(18); 
     candyList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 


     //Creating a scrollpane for the JList 
     JScrollPane scroll = new JScrollPane(candyList, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, 
              JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
     invntryPanel.add(scroll); 

     switchCard = new JButton("View Product"); 
     switchCard.addActionListener(bl); 
     invntryPanel.add(switchCard, BorderLayout.PAGE_END); 

     //Creating the cards 
     JPanel startCard = new JPanel(new BorderLayout()); 
     JPanel acidPopsCard = new JPanel(new BorderLayout()); 
     JPanel bertieBottsCard = new JPanel(new BorderLayout()); 
     JPanel bloodPopsCard = new JPanel(new BorderLayout()); 
     JPanel cauldronCakesCard = new JPanel(new BorderLayout()); 
     JPanel charmChocCard = new JPanel(new BorderLayout()); 
     JPanel chocoballsCard = new JPanel(new BorderLayout()); 
     JPanel chocCauldronsCard = new JPanel(new BorderLayout()); 
     JPanel chocFrogsCard = new JPanel(new BorderLayout()); 
     JPanel chocWandsCard = new JPanel(new BorderLayout()); 
     JPanel roachClustersCard = new JPanel(new BorderLayout()); 
     JPanel crystalPineappleCard = new JPanel(new BorderLayout()); 
     JPanel droobleGumCard = new JPanel(new BorderLayout()); 
     JPanel explodeBonbonsCard = new JPanel(new BorderLayout()); 
     JPanel fizzWhizCard = new JPanel(new BorderLayout()); 
     JPanel iceMiceCard = new JPanel(new BorderLayout()); 
     JPanel jellySlugsCard = new JPanel(new BorderLayout()); 
     JPanel liquorWandsCard = new JPanel(new BorderLayout()); 
     JPanel pepImpsCard = new JPanel(new BorderLayout()); 
     JPanel pinkCocoIceCard = new JPanel(new BorderLayout()); 
     JPanel shockChocCard = new JPanel(new BorderLayout()); 
     JPanel spindleSpidersCard = new JPanel(new BorderLayout()); 
     JPanel sugarQuillsCard = new JPanel(new BorderLayout()); 
     JPanel wizochocCard = new JPanel(new BorderLayout()); 

     //Adding the cards to the infoPanel 
     infoPanel.add(startCard, "Start"); 
     infoPanel.add(acidPopsCard, "Acid Pops"); 
     infoPanel.add(bertieBottsCard, "Bertie Bott's Every Flavour Beans"); 
     infoPanel.add(bloodPopsCard, "Blood-flavoured Lollipops"); 
     infoPanel.add(cauldronCakesCard, "Cauldron Cakes"); 
     infoPanel.add(charmChocCard, "Charm Choc"); 
     infoPanel.add(chocoballsCard, "Chocoballs"); 
     infoPanel.add(chocCauldronsCard, "Chocolate Cauldrons"); 
     infoPanel.add(chocFrogsCard, "Chocolate Frogs"); 
     infoPanel.add(chocWandsCard, "Chocolate Wands"); 
     infoPanel.add(roachClustersCard, "Cockroach Clusters"); 
     infoPanel.add(crystalPineappleCard, "Crystallised Pineapple"); 
     infoPanel.add(droobleGumCard, "Drooble's Best Blowing Gum"); 
     infoPanel.add(explodeBonbonsCard, "Exploding Bonbons"); 
     infoPanel.add(fizzWhizCard, "Fizzing Whizbees"); 
     infoPanel.add(iceMiceCard, "Ice Mice"); 
     infoPanel.add(jellySlugsCard, "Jelly Slugs"); 
     infoPanel.add(liquorWandsCard, "Liquourice Wands"); 
     infoPanel.add(pepImpsCard, "Pepper Imps"); 
     infoPanel.add(pinkCocoIceCard, "Pink Coconut Ice"); 
     infoPanel.add(shockChocCard, "Shock-o-Choc"); 
     infoPanel.add(spindleSpidersCard, "Splindle's Lick'O'Rish Spiders"); 
     infoPanel.add(sugarQuillsCard, "Sugar Quills"); 
     infoPanel.add(wizochocCard, "Wizochoc"); 

     //building the cards 
     startBuilder("honeydukes.jpg", "<html><center>Welcome to the Honeydukes Muggle Ordering System!<br />Please select from one of our products to the left to begin!</center></html>", startCard); 
     verticalBuilder("acidPops.jpg", "<html><center>One of our more exotic treats, Acid Pops are sure to pack a punch!<br /><small>Disclaimer: Honeydukes is not responsible for any injury resulting from use of our products.</small><br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$5.95</center></html>", acidPopsTF, acidPopsCard); 
     verticalBuilder("BertieBotts.jpg", "<html><center>A classic wizard candy, Bertie Bott's are known for having a danger in every mouthful. Is that light brown one toffee, or is it earwax? Only one way to find out!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$16.95</center></html>", bertieBottsTF, bertieBottsCard); 
     verticalBuilder("bloodpop.jpg", "<html><center>For those of more unusual tastes, we have this most interesting lollipop. We won't ask any questions, and anonymity is guaranteed.<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$5.95</center></html>", bloodPopsTF, bloodPopsCard); 
     verticalBuilder("cauldroncake.jpg", "<html><center>A wizarding favourite, cauldron cakes are chocolate on the outside, and pure heaven on the inside. No desert is complete without one!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$14.95</center></html>", cauldronCakesTF, cauldronCakesCard); 
     verticalBuilder("charmchoc.jpg", "<html><center>A candy staple, not only is Charm Choc made of the finest chocolate, it's also charmed for extra flavour!<br /><br />$5.95</center></html>", charmChocTF, charmChocCard); 
     horizontalBuilder("chocoballs.jpg", "<html><center>One of our most popular candies, Chocoballs are chocolate on the outside, but the inside is full of delicious strawberry mousse and clotted cream!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$9.95</center></html>", chocoballsTF, chocoballsCard); 
     verticalBuilder("choccauldrons.jpg", "<html><center>A wizarding favourite, each and every Chocolate Cauldron are filled to the brim with our own special brew of Firewhiskey!<br /><br />NOTICE: The Ministry of Magic would like to remind all that Firewhisky is an alcoholic beverage, and is not to be consumed by those who are underaged.<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$14.95</center></html>", chocCauldronsTF, chocCauldronsCard); 
     verticalBuilder("chocfrogs.jpg", "<html><center>One of the most famous wizarding sweets, Chocolate Frogs are made of the finest Croakoa, enabling them to behave like actual frogs! Each Chocolate Frog comes with card featuring a famous witch or wizard! Try to collect them all!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$14.95</center></html>", chocFrogsTF, chocFrogsCard); 
     horizontalBuilder("chocwands.jpg", "<html><center>Popular as both a gag gift and a tasty treat, chocolate wands are one candy that nobody leaves the shop without!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$9.95</center></html>", chocWandsTF, chocWandsCard); 
     verticalBuilder("cockroachclusters.jpg", "<html><center>Great for tricking friends or quenching your insatiable hunger for cockroaches, these peculiar treats will never get old!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$5.95</center></html>", roachClustersTF, roachClustersCard); 
     verticalBuilder("crystalpineapple.jpg", "<html><center>Endorsed by Professor Horace Slughorn himself, Crystallised pineapple consists of the best pineapples diced up, and then cooked in sugar syrup. This is one sweet treat you don't want to be without!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$9.95</center></html>", crystalPineappleTF, crystalPineappleCard); 
     verticalBuilder("gum.jpg", "<html><center>Guaranteed to never lose its flavour, Drooble's Best Blowing Gum will let you blow bubbles that last for days, and is the best wizarding gum out there!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$2.95</center></html>", droobleGumTF, droobleGumCard); 
     verticalBuilder("bonbons.jpg", "<html><center>Produced by Kaboon Choco Ltd., these treats pop in your mouth -- literally!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$9.95</center></html>", explodeBonbonsTF, explodeBonbonsCard); 
     verticalBuilder("whizbees.jpg", "<html><center>Made from delicious sherbert, Fizzing Whizbees have the effect of also causing you to float a few inches off the ground while sucking on them!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$9.95</center></html>", fizzWhizTF, fizzWhizCard); 
     verticalBuilder("mice.jpg", "<html><center>Charmed to stay cold up to the point of being enjoyed, ice mice will also cause your teeeth to chatter and squeak!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$5.95</center></html>", iceMiceTF, iceMiceCard); 
     verticalBuilder("slugs.jpg", "Perhaps the single most popular sweet, Jelly Slugs are a classic!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$2.95</center></html>", jellySlugsTF, jellySlugsCard); 
     verticalBuilder("liqwand.jpg", "<html><center>Another favourite, these wands won't win you any duels, but they sure are tasty!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$9.95</center></html>", liquorWandsTF, liquorWandsCard); 
     verticalBuilder("imps.jpg", "<html><center>Famous for making anyone who eats them smoke at the ears and nose, these spicy treats are delicious!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$4.95</center></html>", pepImpsTF, pepImpsCard); 
     verticalBuilder("pinkice.jpg", "<html><center>Amazing in every way, these shimmering pink squares are even more enjoyable than they look!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$4.95</center></html>", pinkCocoIceTF, pinkCocoIceCard); 
     verticalBuilder("shock.jpg", "<html><center>Add some SHOCK to your Choc-o-late! Perfect for practical jokes, and tasty too!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$4.95</center></html>", shockChocTF, shockChocCard); 
     verticalBuilder("spiders.jpg", "<html><center>Made entirely out of liquorice, these treats are even bewitched to seem alive!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$4.95</center></html>", spindleSpidersTF, spindleSpidersCard); 
     verticalBuilder("quill.jpg", "<html><center>Perfect for nibbling on during lectures, the professor will never know the difference between you thinking and you enjoying a delicious sugar quill!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$1.95</center></html>", sugarQuillsTF, sugarQuillsCard); 
     verticalBuilder("wizochoc.jpg", "<html><center>There's been an age old debate between wizards of all ages as to whether CharmChoc or WizoChoc is better. Now Muggles can join in as well!<br /><br /><br />Type the quantity of this product you would like to order below.<br /><br />$5.95</center></html>", wizochocTF, wizochocCard); 

     //Creating the interface element for advancing to the checkout screen 
     checkoutButton = new JButton("Checkout"); 
     checkoutPanel.add(checkoutButton, BorderLayout.LINE_END); 

     //Adding everything to the frame 
     orderingPanel.add(checkoutPanel, BorderLayout.PAGE_END); 
     orderingPanel.add(invntryPanel, BorderLayout.LINE_START); 
     orderingPanel.add(infoPanel, BorderLayout.CENTER); 

     mainPanel.add(orderingPanel, BROWSE); 
     mainPanel.add(cartPanel, CART); 
     this.add(mainPanel); 
     this.setVisible(true); 
    } 

    void startBuilder(String p, String l, JPanel n) 
    { 
    try { 
     BufferedImage myPicture = ImageIO.read(new File(p)); 
     JLabel picLabel = new JLabel(new ImageIcon(myPicture)); 
     n.add(picLabel, BorderLayout.LINE_END); 
     } 
    catch (IOException e) {} 
    JLabel lbl = new JLabel(l); 
    n.add(lbl, BorderLayout.CENTER); 
    } 

    void verticalBuilder(String p, String l, JTextField t, JPanel n) 
    { 
    try { 
     BufferedImage myPicture = ImageIO.read(new File(p)); 
     JLabel picLabel = new JLabel(new ImageIcon(myPicture)); 
     n.add(picLabel, BorderLayout.LINE_END); 
     } 
    catch (IOException e) {} 
    JLabel lbl = new JLabel(l); 
    n.add(lbl, BorderLayout.CENTER); 
    t = new JTextField(); 
    n.add(t, BorderLayout.PAGE_END); 
    } 

    void horizontalBuilder(String p, String l, JTextField t, JPanel n) 
    { 
    try { 
     BufferedImage myPicture = ImageIO.read(new File(p)); 
     JLabel picLabel = new JLabel(new ImageIcon(myPicture)); 
     n.add(picLabel, BorderLayout.PAGE_START); 
     } 
    catch (IOException e) {} 
    JLabel Lbl = new JLabel(l); 
    n.add(Lbl, BorderLayout.CENTER); 
    t = new JTextField(); 
    n.add(t, BorderLayout.PAGE_END); 
    } 

    private class ButtonListener implements ActionListener { 
     public void actionPerformed(ActionEvent e) 
     { 
      if (e.getSource() == switchCard) 
      { 
       cl.show(infoPanel, (String)candyList.getSelectedValue()); 
       checkoutButton.addActionListener(this); 
      } 

      else if (e.getSource() == checkoutButton) 
      { 
       NumberFormat cf = NumberFormat.getCurrencyInstance(); 

       String acidPopsCost = cf.format(Total(1, 5.95, acidPopsTF)); 
       String bertieBottsCost = cf.format(Total(1, 16.95, bertieBottsTF)); 
       String bloodPopsCost = cf.format(Total(1, 5.95, bloodPopsTF)); 
       String cauldronCakesCost = cf.format(Total(1, 14.95, cauldronCakesTF)); 
       String charmChocCost = cf.format(Total(1, 5.95, charmChocTF)); 
       String chocoballsCost = cf.format(Total(1, 9.95, chocoballsTF)); 
       String chocCauldronsCost = cf.format(Total(1, 14.95, chocCauldronsTF)); 
       String chocFrogsCost = cf.format(Total(1, 14.95, chocFrogsTF)); 
       String chocWandsCost = cf.format(Total(1, 9.95, chocWandsTF)); 
       String roachClustersCost = cf.format(Total(1, 5.95, roachClustersTF)); 
       String crystalPineappleCost = cf.format(Total(1, 9.95, crystalPineappleTF)); 
       String droobleGumCost = cf.format(Total(1, 2.95, droobleGumTF)); 
       String explodeBonbonsCost = cf.format(Total(1, 9.95, explodeBonbonsTF)); 
       String fizzWhizCost = cf.format(Total(1, 9.95, fizzWhizTF)); 
       String iceMiceCost = cf.format(Total(1, 5.95, iceMiceTF)); 
       String jellySlugsCost = cf.format(Total(1, 2.95, jellySlugsTF)); 
       String liquorWandsCost = cf.format(Total(1, 9.95, liquorWandsTF)); 
       String pepImpsCost = cf.format(Total(1, 4.95, pepImpsTF)); 
       String pinkCocoIceCost = cf.format(Total(1, 4.95, pinkCocoIceTF)); 
       String shockChocCost = cf.format(Total(1, 4.95, shockChocTF)); 
       String spindleSpidersCost = cf.format(Total(1, 4.95, spindleSpidersTF)); 
       String sugarQuillsCost = cf.format(Total(1, 1.95, sugarQuillsTF)); 
       String wizochocCost = cf.format(Total(1, 5.95, wizochocTF)); 

       int acidPopsNum = (int)Total(0, 0, acidPopsTF); 
       int bertieBottsNum = (int)Total(0, 0, bertieBottsTF); 
       int bloodPopsNum = (int)Total(0, 0, bloodPopsTF); 
       int cauldronCakesNum = (int)Total(0, 0, cauldronCakesTF); 
       int charmChocNum = (int)Total(0, 0, charmChocTF); 
       int chocoballsNum = (int)Total(0, 0, chocoballsTF); 
       int chocCauldronsNum = (int)Total(0, 0, chocCauldronsTF); 
       int chocFrogsNum = (int)Total(0, 0, chocFrogsTF); 
       int chocWandsNum = (int)Total(0, 0, chocWandsTF); 
       int roachClustersNum = (int)Total(0, 0, roachClustersTF); 
       int crystalPineappleNum = (int)Total(0, 0, crystalPineappleTF); 
       int droobleGumNum = (int)Total(0, 0, droobleGumTF); 
       int explodeBonbonsNum = (int)Total(0, 0, explodeBonbonsTF); 
       int fizzWhizNum = (int)Total(0, 0, fizzWhizTF); 
       int iceMiceNum = (int)Total(0, 0, iceMiceTF); 
       int jellySlugsNum = (int)Total(0, 0, jellySlugsTF); 
       int liquorWandsNum = (int)Total(0, 0, liquorWandsTF); 
       int pepImpsNum = (int)Total(0, 0, pepImpsTF); 
       int pinkCocoIceNum = (int)Total(0, 0, pinkCocoIceTF); 
       int shockChocNum = (int)Total(0, 0, shockChocTF); 
       int spindleSpidersNum = (int)Total(0, 0, spindleSpidersTF); 
       int sugarQuillsNum = (int)Total(0, 0, sugarQuillsTF); 
       int wizochocNum = (int)Total(0, 0, wizochocTF); 

       cart = new ArrayList(); 

       addCart("Acid Pops", acidPopsNum, acidPopsCost); 
       addCart("Bertie Botts Every Flavour Beans", bertieBottsNum, bertieBottsCost); 
       addCart("Blood-flavoured Lollipops", bloodPopsNum, bloodPopsCost); 
       addCart("Cauldron Cakes", cauldronCakesNum, cauldronCakesCost); 
       addCart("Charm Choc", charmChocNum, charmChocCost); 
       addCart("Chocoballs", chocoballsNum, chocoballsCost); 
       addCart("Chocolate Cauldrons", chocCauldronsNum, chocCauldronsCost); 
       addCart("Chocolate Frogs", chocFrogsNum, chocFrogsCost); 
       addCart("Chocolate Wands", chocWandsNum, chocWandsCost); 
       addCart("Cockroach Clusters", roachClustersNum, roachClustersCost); 
       addCart("Crystallised Pineapple", crystalPineappleNum, cauldronCakesCost); 
       addCart("Drooble's Best Blowing Gum", droobleGumNum, droobleGumCost); 
       addCart("Exploding Bonbons", explodeBonbonsNum, explodeBonbonsCost); 
       addCart("Fizzing Whizbees", fizzWhizNum, fizzWhizCost); 
       addCart("Ice Mice", iceMiceNum, iceMiceCost); 
       addCart("Jelly Slugs", jellySlugsNum, jellySlugsCost); 
       addCart("Liquorice Wands", liquorWandsNum, liquorWandsCost); 
       addCart("Pepper Imps", pepImpsNum, pepImpsCost); 
       addCart("Pink Coconut Ice", pinkCocoIceNum, pinkCocoIceCost); 
       addCart("Shock-o-Choc", shockChocNum, shockChocCost); 
       addCart("Splindle's Lick'O'Rish Spiders", spindleSpidersNum, spindleSpidersCost); 
       addCart("Sugar Quills", sugarQuillsNum, sugarQuillsCost); 
       addCart("Wizochoc", wizochocNum, wizochocCost); 

       cart.remove(cart.size()); 
       cartArray = cart.toArray(); 

       cl2.show(mainPanel, CART); 
      } 
     } 

     double Total(int i, double p, JTextField t) 
     { 
      if (i == 1) 
      { 
       try 
       { 
        return (p* (Integer.parseInt(t.getText()))); 
       } 
       catch (NumberFormatException e) { return 0; } 
      } 
      else 
      { 
       try 
       { 
        return Integer.parseInt(t.getText()); 
       } 
       catch (NumberFormatException e) { return 0; } 
      } 
     } 

     void addCart(String p, int n, String c) 
     { 
      if (n > 0) 
      { 
       cart.add(p); 
       cart.add(n); 
       cart.add(c); 
       cart.add(""); 
      } 
     } 
    } 
} 

例外:

 at java.awt.Container.dispatchEventImpl(Container.java:2273) 
     at java.awt.Window.dispatchEventImpl(Window.java:2713) 
     at java.awt.Component.dispatchEvent(Component.java:4687) 
     at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) 
     at java.awt.EventQueue.access$000(EventQueue.java:101) 
     at java.awt.EventQueue$3.run(EventQueue.java:666) 
     at java.awt.EventQueue$3.run(EventQueue.java:664) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo 
main.java:76) 
     at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo 
main.java:87) 
     at java.awt.EventQueue$4.run(EventQueue.java:680) 
     at java.awt.EventQueue$4.run(EventQueue.java:678) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo 
main.java:76) 
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:677) 
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre 
ad.java:211) 
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread. 
java:128) 
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre 
ad.java:117) 
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) 

     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) 

     at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) 
+0

什麼是錯誤訊息? – 2012-07-11 06:52:26

+0

沒有錯誤信息。這是一個邏輯錯誤。 – Sam 2012-07-11 06:55:09

回答

2

當運行代碼,點擊結帳按鈕,我在該行

return (p* (Integer.parseInt(t.getText()))); 

嘗試檢查,如果你進入總JTextField的()是實際上可以設置得到一個NullPointerException。 您可能需要添加其他catch塊崩潰保持應用程序:

catch (Exception e) { 
    e.printStackTrace(); 
    return 0; 
} 

更新

實際的問題是,你正在試圖通過他們傳遞到初始化各種JTextField組件的方式建設者的方法,例如

verticalBuilder("filename", "html", acidPopsTF, acidPopsCard); 

您需要回報文本字段從建築商,並將其分配到外地/成員,像這樣:

acidPopsTF = verticalBuilder("filename", "html", acidPopsCard); 
+0

不太確定爲什麼會發生這種情況。當我按下Checkout按鈕時,絕對沒有任何事情發生,並且在catch塊中添加對我而言沒有任何改變。 – Sam 2012-07-11 07:14:42

+0

你如何運行應用程序? – 2012-07-11 07:18:55

+0

我從命令提示符運行它。編譯它,然後從那裏運行它。 – Sam 2012-07-11 07:21:55

1

嘗試這種方式

switchCard.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      System.out.println("Can you see this logged?"); 
     } 
    }); 
+0

您是否想要附加checkoutButton而不是switchCard?無論哪種方式:switchCard工作,checkoutButton沒有。 – Sam 2012-07-11 07:08:44

1

你的循環孔似乎所在位置:

if (e.getSource() == switchCard) 
{ 
    cl.show(infoPanel, (String)candyList.getSelectedValue()); 
    checkoutButton.addActionListener(this); 
} 

既然你這裏指this作爲參數,所以repl王牌這與b1,你在外部類使用。因此,讓ButtonListener成爲一個實例變量,而不是本地的ClientApp類的構造函數。

if (e.getSource() == switchCard) 
{ 
    cl.show(infoPanel, (String)candyList.getSelectedValue()); 
    checkoutButton.addActionListener(b1); 
} 

最新編輯:

當我通過您的代碼走了,我才明白,你沒有初始化你JTextField小號的任何地方,你只要寫private JTextField acidPopsTF;然後你傳遞acidPopsTF and other JTextField s到方法,沒有初始化,那是你的問題,首先初始化的地方他們像private JTextField acidPopsTF = new JTextField(10);

ANOTHER編輯:

你需要對此進行確認線,因爲它必將給你ArrayIndexOutOfBoundsException

cart.remove(cart.size()); 

好像你addCart(...)方法不工作,如果你把一個System.out.println(...)if block裏面,你會得到什麼: (作爲輸出。

還有一個編輯

我覺得奇怪,我爲什麼你寫這幾行

int acidPopsNum = (int)Total(0, 0, acidPopsTF); 

因爲你提供0作爲第一個參數,因此第一個條件Total(...)方法內即if (i == 1)會永遠不會滿足。你應該更好地檢查這段代碼。

+0

應該從各種構建器方法返回文本字段 - 請參閱我的答案以獲取詳細信息 – 2012-07-11 07:31:31

+1

我確實喜歡您的答案:-)但是,我剛剛意識到初始化'JTextField'並不是唯一的問題。此行''ArrayIndexOutOfBounds'還有一個錯誤'cart.remove(cart.size());' – 2012-07-11 07:49:01