2013-11-28 51 views
-1

我想創建一個彩票程序。JButtons和Action Listener的彩票程序

應該有35個數字可供選擇,你只能選擇7.因此,我創建了35個JButton。當你點擊一個JButton時,它將使用Action Command取得它的值,並使用JLabel輸出該值。

按鈕1的值爲1,按鈕2的值爲2,依此類推。

雖然這是問題:當我點擊我的按鈕時,它取得它的值(例如12),然後它設置JLabel顯示「12」。但是當我之後點擊另一個按鈕時,它會更改第一個值而不是顯示一個新的數字。

我想這有點類似於有人想使用掃描儀並且使用NextInt();.我基本上希望能夠在第一個數字之後選擇另一個數字。

幫助將不勝感激,因爲我基本上已經嘗試了一切。

在此先感謝。

import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.*; 



public class Firstclass implements ActionListener { 
final static String BUTTONPANEL = "Play the lottery"; 
final static String TEXTPANEL = "Discover nuclear physics"; 
final static String BUTTONPANEL2 = "Zomg free food"; 

final static int extraWindowWidth = 200; 
final static int extraWindowHeight = 500; 

//Lotto buttons 
JButton b1,b2,b3,b4,b5, 
b6,b7,b8,b9,b10,b11,b12, 

b13,b14,b15,b16,b17,b18, 
b19,b20,b21,b22,b23,b24, 

b25, 
b26,b27,b28,b29,b30,b31,b32 
,b33,b34,b35; 

//Labels 
JLabel lbl1,lbl2,lbl3,lbl4,lbl5,lbl6,lbl7,info; 

public void addComponentToPane(Container pane) { 
    JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.LEFT); 




    //First panel 
    JPanel card1 = new JPanel() { 
     //Make the panel wider than it really needs, so 
     //the window's wide enough for the tabs to stay 
     //in one row. 
     public Dimension getPreferredSize() { 
      Dimension size = super.getPreferredSize(); 
      size.width += extraWindowWidth; 
      size.height += extraWindowHeight; 
      return size; 
     } 
    }; 
    //Setting THESE particular JButtons to the first actionlistener 
    ActionListener FirstListener = new FirstListener(); 

    //Adding and configuring the JButtons 
    b1 = new JButton(Integer.toString(1)); 
    b1.addActionListener(FirstListener); 
    b1.setPreferredSize(new Dimension(50,50)); 
    card1.add(b1); 

    b2 = new JButton(Integer.toString(2)); 
    b2.addActionListener(FirstListener); 
    b2.setPreferredSize(new Dimension(50,50)); 
    card1.add(b2); 

    b3 = new JButton(Integer.toString(3)); 
    b3.addActionListener(FirstListener); 
    b3.setPreferredSize(new Dimension(50,50)); 
    card1.add(b3); 

    b4 = new JButton(Integer.toString(4)); 
    b4.addActionListener(FirstListener); 
    b4.setPreferredSize(new Dimension(50,50)); 
    card1.add(b4); 

    b5 = new JButton(Integer.toString(5)); 
    b5.addActionListener(FirstListener); 
    b5.setPreferredSize(new Dimension(50,50)); 
    card1.add(b5); 

    b6 = new JButton(Integer.toString(6)); 
    b6.addActionListener(FirstListener); 
    b6.setPreferredSize(new Dimension(50,50)); 
    card1.add(b6); 

    b7 = new JButton(Integer.toString(7)); 
    b7.addActionListener(FirstListener); 
    b7.setPreferredSize(new Dimension(50,50)); 
    card1.add(b7); 

    b8 = new JButton(Integer.toString(8)); 
    b8.addActionListener(FirstListener); 
    b8.setPreferredSize(new Dimension(50,50)); 
    card1.add(b8); 

    b9 = new JButton(Integer.toString(9)); 
    b9.addActionListener(FirstListener); 
    b9.setPreferredSize(new Dimension(50,50)); 
    card1.add(b9); 

    b10 = new JButton(Integer.toString(10)); 
    b10.addActionListener(FirstListener); 
    b10.setPreferredSize(new Dimension(50,50)); 
    card1.add(b10); 

    b11 = new JButton(Integer.toString(11)); 
    b11.addActionListener(FirstListener); 
    b11.setPreferredSize(new Dimension(50,50)); 
    card1.add(b11); 

    b12 = new JButton(Integer.toString(12)); 
    b12.addActionListener(FirstListener); 
    b12.setPreferredSize(new Dimension(50,50)); 
    card1.add(b12); 

    b13 = new JButton(Integer.toString(13)); 
    b13.addActionListener(FirstListener); 
    b13.setPreferredSize(new Dimension(50,50)); 
    card1.add(b13); 

    b14 = new JButton(Integer.toString(14)); 
    b14.addActionListener(FirstListener); 
    b14.setPreferredSize(new Dimension(50,50)); 
    card1.add(b14); 

    b15 = new JButton(Integer.toString(15)); 
    b15.addActionListener(FirstListener); 
    b15.setPreferredSize(new Dimension(50,50)); 
    card1.add(b15); 

    b16 = new JButton(Integer.toString(16)); 
    b16.addActionListener(FirstListener); 
    b16.setPreferredSize(new Dimension(50,50)); 
    card1.add(b16); 

    b17 = new JButton(Integer.toString(17)); 
    b17.addActionListener(FirstListener); 
    b17.setPreferredSize(new Dimension(50,50)); 
    card1.add(b17); 

    b18 = new JButton(Integer.toString(18)); 
    b18.addActionListener(FirstListener); 
    b18.setPreferredSize(new Dimension(50,50)); 
    card1.add(b18); 

    b19 = new JButton(Integer.toString(19)); 
    b19.addActionListener(FirstListener); 
    b19.setPreferredSize(new Dimension(50,50)); 
    card1.add(b19); 

    b20 = new JButton(Integer.toString(20)); 
    b20.addActionListener(FirstListener); 
    b20.setPreferredSize(new Dimension(50,50)); 
    card1.add(b20); 

    b21 = new JButton(Integer.toString(21)); 
    b21.addActionListener(FirstListener); 
    b21.setPreferredSize(new Dimension(50,50)); 
    card1.add(b21); 

    b22 = new JButton(Integer.toString(22)); 
    b22.addActionListener(FirstListener); 
    b22.setPreferredSize(new Dimension(50,50)); 
    card1.add(b22); 

    b23 = new JButton(Integer.toString(23)); 
    b23.addActionListener(FirstListener); 
    b23.setPreferredSize(new Dimension(50,50)); 
    card1.add(b23); 

    b24 = new JButton(Integer.toString(24)); 
    b24.addActionListener(FirstListener); 
    b24.setPreferredSize(new Dimension(50,50)); 
    card1.add(b24); 

    b25 = new JButton(Integer.toString(25)); 
    b25.addActionListener(FirstListener); 
    b25.setPreferredSize(new Dimension(50,50)); 
    card1.add(b25); 

    b26 = new JButton(Integer.toString(26)); 
    b26.addActionListener(FirstListener); 
    b26.setPreferredSize(new Dimension(50,50)); 
    card1.add(b26); 

    b27 = new JButton(Integer.toString(27)); 
    b27.addActionListener(FirstListener); 
    b27.setPreferredSize(new Dimension(50,50)); 
    card1.add(b27); 

    b28 = new JButton(Integer.toString(28)); 
    b28.addActionListener(FirstListener); 
    b28.setPreferredSize(new Dimension(50,50)); 
    card1.add(b28); 

    b29 = new JButton(Integer.toString(29)); 
    b29.addActionListener(FirstListener); 
    b29.setPreferredSize(new Dimension(50,50)); 
    card1.add(b29); 

    b30 = new JButton(Integer.toString(30)); 
    b30.addActionListener(FirstListener); 
    b30.setPreferredSize(new Dimension(50,50)); 
    card1.add(b30); 

    b31 = new JButton(Integer.toString(31)); 
    b31.addActionListener(FirstListener); 
    b31.setPreferredSize(new Dimension(50,50)); 
    card1.add(b31); 

    b32 = new JButton(Integer.toString(32)); 
    b32.addActionListener(FirstListener); 
    b32.setPreferredSize(new Dimension(50,50)); 
    card1.add(b32); 

    b33 = new JButton(Integer.toString(33)); 
    b33.addActionListener(FirstListener); 
    b33.setPreferredSize(new Dimension(50,50)); 
    card1.add(b33); 

    b34 = new JButton(Integer.toString(34)); 
    b34.addActionListener(FirstListener); 
    b34.setPreferredSize(new Dimension(50,50)); 
    card1.add(b34); 

    b35 = new JButton(Integer.toString(35)); 
    b35.addActionListener(FirstListener); 
    b35.setPreferredSize(new Dimension(50,50)); 
    card1.add(b35); 


    info = new JLabel("Your numbers are: "); 
    card1.add(info); 

    lbl1 = new JLabel(""); 
    card1.add(lbl1); 

    lbl2 = new JLabel(""); 
    card1.add(lbl2); 

    lbl3 = new JLabel(""); 
    card1.add(lbl3); 

    lbl4 = new JLabel(""); 
    card1.add(lbl4); 

    lbl5 = new JLabel(""); 
    card1.add(lbl5); 

    lbl6 = new JLabel(""); 
    card1.add(lbl6); 

    lbl7 = new JLabel(""); 
    card1.add(lbl7); 



    //Second panel 

    JPanel card2 = new JPanel(); 
    card2.add(new JTextField("TextField", 20)); 


    //Third panel 
    JPanel card3 = new JPanel(); 
    card3.add(new JButton("Hardy harr")); 



    tabbedPane.addTab(BUTTONPANEL, card1); 
    tabbedPane.addTab(TEXTPANEL, card2); 
    tabbedPane.addTab(BUTTONPANEL2, card3); 

    pane.add(tabbedPane, BorderLayout.CENTER); 

} 



/** 
* Create the GUI and show it. For thread safety, 
* this method should be invoked from the 
* event dispatch thread. 
*/ 
private static void createAndShowGUI() { 
    //Create and set up the window. 
    JFrame frame = new JFrame("Slutuppgift"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 



    //Create and set up the content pane. 
    Firstclass demo = new Firstclass(); 
    demo.addComponentToPane(frame.getContentPane()); 

    //Display the window. 
    //frame.pack(); 
    frame.setVisible(true); 
    frame.setSize(500,700); 
    frame.setResizable(false); 
    frame.setLocationRelativeTo(null); 
} 

public static void main(String[] args) { 
    /* Use an appropriate Look and Feel */ 
    try { 
     //UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 
     UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); 
    } catch (UnsupportedLookAndFeelException ex) { 
     ex.printStackTrace(); 
    } catch (IllegalAccessException ex) { 
     ex.printStackTrace(); 
    } catch (InstantiationException ex) { 
     ex.printStackTrace(); 
    } catch (ClassNotFoundException ex) { 
     ex.printStackTrace(); 
    } 
    /* Turn off metal's use of bold fonts */ 
    UIManager.put("swing.boldMetal", Boolean.FALSE); 


    //Schedule a job for the event dispatch thread: 
    //creating and showing this application's GUI. 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowGUI(); 
     } 
    }); 
} 
private class FirstListener implements ActionListener { 

    /** This method will be invoked when a button is clicked */ 

    public void actionPerformed(ActionEvent e) { 

     if (e.getSource() == b1 || e.getSource()==b2 || e.getSource()==b3|| 
       e.getSource()==b4 || e.getSource()==b5 || e.getSource()==b6 || 
       e.getSource()==b7 || e.getSource()==b8 || 
       e.getSource()==b9 || e.getSource()==b10 || 
       e.getSource()==b11 || e.getSource()==b12 || e.getSource()==b13 || 
       e.getSource()==b14 || e.getSource()==b15 || e.getSource()==b16 || 
       e.getSource()==b17 || e.getSource()==b18 || e.getSource()==b19 || 
       e.getSource()==b20 || e.getSource()==b21 || e.getSource()==b22 || 
       e.getSource()==b23 || e.getSource()==b24 || e.getSource()==b25 || 
       e.getSource()==b26 || e.getSource()==b27 || e.getSource()==b28 || 
       e.getSource()==b29 || e.getSource()==b30 || e.getSource()==b31 || 
       e.getSource()==b32 || e.getSource()==b33 || e.getSource()==b34 || 
       e.getSource()==b35) {lbl1.setText(e.getActionCommand());} 
       } 

     } 

private class SecondListener implements ActionListener { 


public void actionPerformed(ActionEvent d) { 

    if (d.getSource() == b1 || d.getSource()==b2 || d.getSource()==b3|| 
      d.getSource()==b4 || d.getSource()==b5 || d.getSource()==b6 || 
      d.getSource()==b7 || d.getSource()==b8 || 
      d.getSource()==b9 || d.getSource()==b10 || 
      d.getSource()==b11 || d.getSource()==b12 || d.getSource()==b13 || 
      d.getSource()==b14 || d.getSource()==b15 || d.getSource()==b16 || 
      d.getSource()==b17 || d.getSource()==b18 || d.getSource()==b19 || 
      d.getSource()==b20 || d.getSource()==b21 || d.getSource()==b22 || 
      d.getSource()==b23 || d.getSource()==b24 || d.getSource()==b25 || 
      d.getSource()==b26 || d.getSource()==b27 || d.getSource()==b28 || 
      d.getSource()==b29 || d.getSource()==b30 || d.getSource()==b31 || 
      d.getSource()==b32 || d.getSource()==b33 || d.getSource()==b34 || 
      d.getSource()==b35) {lbl2.setText(d.getActionCommand());} 
      } 


} 



@Override 
public void actionPerformed(ActionEvent e) { 
    // TODO Auto-generated method stub 

} 

}`

+1

哇。 35個單獨的按鈕變量,而不是一組按鈕! – John3136

+0

您的問題非常廣泛,請嘗試將其縮小到您正在努力處理的不是整個程序的特定代碼。 – shenku

回答

0

你的聽衆需要知道要更改的標籤。學習如何使用數組,然後你的代碼可以像(僞代碼)

int labelToChange = 0; 
JLabel labels[]; 

listener() 
{ 
    // This is actually bad: using the GUI as the "source" of data 
    // but in this case there are so many other issues this is the least 
    // of your problems... 
    // 
    if (labelToChange < 7) { 
     labels[labelToChange++] = e.getSource().getText(); 
    } else { 
     // ERROR - too many buttons pressed 
    } 
} 
}