2012-04-26 85 views
0

我希望將計數器添加到我的按鈕我也想要了解如何設置每個計數器,以便一旦計算機達到設定的計數數量時,我可能會在計算機上打開一個文件如何將計數器添加到GUI

package layout; 

import java.awt.Component; 
import java.awt.Container; 
import javax.swing.BoxLayout; 
import javax.swing.JButton; 
import javax.swing.JFrame; 

public class BoxLayoutDemo { 
    public static void addComponentsToPane(Container pane) { 
     pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS)); 
    addAButton("Section 1", pane); 
    addAButton("Section 2", pane); 
    addAButton("Section 3", pane); 
    addAButton("Section 4", pane); 
    addAButton("Section 5", pane); 
    addAButton("Section 6", pane); 
    addAButton("Section 7", pane); 
    addAButton("Section 8", pane); 
    addAButton("Section 9", pane); 
} 

private static void addAButton(String text, Container container) { 
    JButton button = new JButton(text); 
    button.setAlignmentX(Component.CENTER_ALIGNMENT); 
    container.add(button); 
} 


private static void createAndShowGUI() { 

    JFrame frame = new JFrame("Counter"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 


    addComponentsToPane(frame.getContentPane()); 

    frame.pack(); 
    frame.setVisible(true); 
} 

public static void main(String[] args) { 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowGUI(); 
     } 
    }); 
} 
} 
` 

請幫助我是一個noob,它花了我數週才找到如何做到這一點。

+2

歡迎來到SO。你的具體問題是什麼? *「一旦達到我設置的計數設定數量......」*什麼?直到您找到有心理人士的論壇回覆,我會建議您仔細重新閱讀您的帖子,如果可以的話,以確保發佈前有意義。 – 2012-04-26 17:54:38

+0

順便說一下'addAButton(「Section 1」,pane); .. addAButton(「Section 9」,pane);'在你掌握循環之前做GUI編程是一個奇怪的方法。看起來好像試圖在沒有地基,沒有結構的房子上繪製排水溝。 – 2012-04-26 17:58:16

+0

對不起,我的意思是,當它達到一個設定的計數值時,它會打開我準備好的6個.exe文件之一。 – user1359327 2012-04-26 18:47:02

回答

0

在您的代碼,您已經添加了一個按鈕,一個集裝箱,但你還沒有添加任何監聽到該按鈕 - 這樣就不會通過點擊它執行任何動作......

private static void addAButton(String text, Container container) { 
    JButton button = new JButton(text); 
    button.setAlignmentX(Component.CENTER_ALIGNMENT); 
    container.add(button); 
} 

所以你需要添加一個ActionListener到你的按鈕,並讓它增加一個計數器。在你的動作監聽器中,你可以添加一個計數器。

新的代碼可能是這個樣子:

private static void addAButton(String text, Container container) { 
    JButton button = new JButton(text); 
    button.setAlignmentX(Component.CENTER_ALIGNMENT); 
    button.addActionListener(new ButtonListener()); 
    container.add(button); 
} 

class ButtonListener implements ActionListener { 
    int numClicks; 
    static int buttonClicks = 0; 
    ButtonListener() { 
     numClicks = 0; 
    } 
    public void actionPerformed(ActionEvent e) { 
     buttonClicks++; 
     numClicks++; 
     // do some action 
    } 
    public int getNumClicks() { return numClicks; } 
    static public int getButtonClicks() { return buttonClicks; } 
} 

在這個例子中,我已經添加了兩個方法:
1)getNumClicks():獲得點擊的數量在這種ButtonListener實例(所以只要你添加一個新的ButtonListener每個按鈕,這將是爲每個按鈕是唯一的)
2)getButtonClicks():在所有情況下

一種更好的方式獲得點擊的次數,將是擴展JButton的創建你自己的自定義按鈕,然後你可以添加這些方法到按鈕本身而不是ButtonListener。

0

如果你想計算一個按鈕被按下的次數,那麼你需要一個ActionListener。下面是這樣一個例子:

public class IListen implements ActionListener 
{ 
    int hits = 0; 
    public IListen() 
    { 
     JFrame frame = new JFrame("Title"); 
     JPanel panel = new JPanel(); 
     JButton button = new JButton("hello!"); 
     button.addActionListener(this); 
     panel.add(button); 
     frame.add(panel); 
     frame.setSize(200,200); 
     frame.setVisible(true); 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
     JButton source = e.getSource(); 
     if(source == button) 
      hits++; 

     System.out.println("you hit my button "+hits+" times!"); 
    } 

    public static void main(String args[]) 
    { 
     new IListen(); 
    } 
} 

我還彙編了自己,如果很抱歉有語法錯誤,希望這將幫助你和擴大你的編程能力。

0

你需要知道的一切,你需要做的就是HERE。如果花了幾個星期才能完成這些工作,那麼對於您徹底閱讀本教程將會非常有幫助。

+0

謝謝你我會繼續閱讀 – user1359327 2012-04-26 18:53:07