2017-08-09 8 views
-1

このプログラムでは、一部のボタンをランダムに無効にして、ユーザーがすべてを選択できないようにする必要があります。 Javaのランダムボタンを無効にする方法はありますか?ランダムにJavaのボタンを無効にする方法

私はMath.randomを使用して考えていたが、私は起動する方法を知っているか、それを指すものではありません.....

これらはボタンです。

JButton but1 = new JButton(); 
JButton but2 = new JButton(); 
JButton but3 = new JButton(); 
JButton but4 = new JButton(); 
JButton but5 = new JButton(); 
JButton but6 = new JButton(); 
JButton but7 = new JButton(); 

答えて

0

アレイ/ VARARG Verson:

public JButton getRandomButton(JButton... buttons) { 
    int index = (int) (Math.random() * buttons.length); 

    return buttons[index]; 
} 

リストバージョン:

public JButton getRandomButton(List<JButton> buttons) { 
    int index = (int) (Math.random() * buttons.size()); 

    return buttons.get(index); 
} 

あなたがものを行うためには、両方の方法はランダムのJButtonを返します。

+0

ありがとうございます、それは働いています! これは本当に重要ではありませんが、一度に複数のボタンをランダムに無効にしたり、2つのボタンまたは3つのボタンを無効にすることもできます。ありがとうございました P.S私は** Array/Vararg Verso ** –

+0

を使いました。メソッドを複数回呼び出すと、複数のボタンが戻ってきます。同じボタンを複数回取得する可能性があることに留意してください。 – 5tingr4y

0

あなたは、その後、リストにすべてを置くリストをシャッフルし、例えばインデックス0の要素を無効にすることができます...

が、次の点に注意してください

  • それは起こり得ますすでに無効になっているボタンを無効にしているので、何らかのチェックをする必要があります。
  • リストをシャッフルする操作は、より多くの時間を必要とする操作で、リストに含まれるボタンの数によって異なります。

List<JButton> items = Arrays.asList(new JButton(), new JButton(), new JButton()); 
System.out.println(items); 
Collections.shuffle(items); 
items.get(0).setEnabled(true); 
0

Listにあなたのボタンを入れて、それらを反復処理します。ボタンを有効にするか無効にするかを決定するには、Random.nextBooleanを使用します。これはあなたに50/50の分布を与えるでしょう。他に何かが必要な場合は、nextIntとモジュラスを使用してください。

List<JButton> myButtons = /*whatever*/; 

final Random generator = new Random(); 
for (JButton button : myButtons) 
{ 
    button.setEnabled(generator.nextBoolean()); 
} 

これは、任意の数のボタンがいつでも有効になることを保証するものではありません。それが重要かどうかは明確ではありませんでした。

関連する問題