1

ボタンにカウンターを追加したいのですが、各カウンターの設定方法も学びたいので、

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();
        }
    });
}
}
`

私が初心者であるのを助けてください。これを行う方法を見つけるのに数週間かかりました。

4

3 に答える 3

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; }
}

この例では、2 つのメソッドを追加しました
。1) getNumClicks(): この ButtonListener インスタンスでクリック数を取得します (各ボタンに新しい ButtonListener を追加する限り、これは各ボタンで一意になります)
。2) getButtonClicks(): すべてのインスタンスのクリック数を取得する

より良い方法は、JButton を拡張して独自のカスタム ボタンを作成し、これらのメソッドを ButtonListener ではなくボタン自体に追加することです。

于 2012-04-26T17:50:48.897 に答える
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();
    }
}

構文エラーがある場合は申し訳ありませんが、コンパイルしていません。うまくいけば、これが助けになり、プログラミング能力が広がります。

于 2012-04-26T17:59:46.910 に答える
0

あなたがやりたいことをするために知っておくべきことはすべてここにあります. それだけの作業を行うのに数週間かかった場合は、チュートリアルを完全に読むことは非常に有益です。

于 2012-04-26T18:24:36.010 に答える