2016-04-05 5 views
1

私は宝くじプログラムを作っていますが、私が望むのは、アレイ上の数字をクリックしてクリックすると、複数のJButtonsを画面上に表示することです。ここまでは私のコードですが、私は初心者ですので、次に何をするのか分からず、助けていただければ幸いです。ありがとう!いくつかのJButtonは値を1つの配列に格納しますか?

b1 = new JButton(); 
    b1.setLocation (5, 5); 
    b1.setSize (50, 50); 
    //b1.setText ("1"); 
    b1.setIcon(new ImageIcon("jedan.png")); 
    c.add(b1); 

    b2 = new JButton(); 
    b2.setLocation (60, 5); 
    b2.setSize (50, 50); 
    b2.setText ("2"); 
    c.add(b2);   

    b3 = new JButton(); 
    b3.setLocation (115, 5); 
    b3.setSize (50, 50); 
    b3.setText ("3"); 
    c.add(b3); 
+2

「ヌル」レイアウトを使用しないでください。ピクセルの完全なレイアウトは、最新のUIデザイン内の錯覚です。コンポーネントの個々のサイズに影響する要因は多すぎますが、いずれも制御できません。 Swingは、コアのレイアウトマネージャーと連携するように設計されています。これを破棄することで、問題や問題の終わりがなくなります。 – MadProgrammer

+3

[アクションリスナーの作成方法](http ://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html) – MadProgrammer

答えて

0

恐らく最も簡単なことは、ArrayListを作成することです。

ArrayList<Integer> lotteryNumbers = new ArrayList<>(); 

ボタンを押すたびに、配列に数値を追加するアクションを実行する必要があります。ここでActionListenerを作成する必要があります。

このクラスを各ボタンで再利用できるように、ActionListenerインターフェイスを実装するインナークラスを作成することをおすすめします。

// This code should go within the same class that you declare your ArrayList 
private class ButtonClickListener implements ActionListener { 

    // This is the method that will be called when a button is clicked. 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     if (e.getSource() instanceof JButton) { 
      lotteryNumbers.add(Integer.parseInt(((JButton)e.getSource()).getText())); 
     } 
    } 
} 

次に、あなただけの、このクラスのインスタンスをインスタンス化し、すべてのボタンにActionListenerとして追加する必要があります。

ActionListener buttonClickListener = new ButtonClickListener(); 

b1.addActionListener(buttonActionListener); 
b2.addActionListener(buttonActionListener); 
b3.addActionListener(buttonActionListener); 

:これが機能するために私は、各ボタン上のテキストは、アレイに追加する宝くじの番号に対応することを想定しています。私はまた、ボタンのテキストに整数に変換できる唯一の数字が含まれていると仮定しています。

+0

ボタン上に数字の代わりにイメージを使用することを考えていましたが、実際は問題ではありません。とにかく助けてくれてありがとう! –

関連する問題