2012-07-11 34 views
2

一直沒有找到明確的答案。我知道一個按鈕可以有多個監聽器,但是反過來呢?目前有一個問題,我在ButtonListener上設置的第二個按鈕沒有響應,我想知道這是爲什麼。如果我試圖做的事情是不可能的,那麼你如何設置另一個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; 

    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 interface element for advancing to the checkout screen 
    checkoutButton = new JButton("Checkout"); 
    checkoutButton.addActionListener(bl); 
    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, "Ordering"); 
    mainPanel.add(cartPanel, "Cart"); 
    if (currentPage == 1) 
    { 
     cl2.show(mainPanel, "Cart"); 
    } 

    if (currentPage == 0) 
    { 
     cl2.show(mainPanel, "Ordering"); 
    } 

    this.add(mainPanel); 
    this.setVisible(true); 

回答

5

當然你可以使用使用single偵聽一個或多個Buttons。欲瞭解更多inforation閱讀教程網頁:Writing Event Listeners

+0

好知道。回到調試,看來。 – Sam 2012-07-11 06:21:00

+0

你會碰巧有任何線索爲什麼ButtonListener不工作?其他一切似乎都是按順序進行的。 – Sam 2012-07-11 06:39:34

1

如果你想設置一個每一個按鈕監聽..then嘗試Anonymous class

如:

button_1.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     JOptionPane.showMessageDialog(null, "You clicked the 1st button!"); 
    } 
    }); 

    button_2.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     JOptionPane.showMessageDialog(null, "You clicked the 2nd button!"); 
    } 
    }); 
+0

唯一的問題就是該方法需要我做大量的事情最終。 – Sam 2012-07-11 06:20:11

+0

然後執行此操作...........................如果您不想使用最終命令,請使用開關 – 2012-07-11 06:24:55

相關問題