2017-08-09 44 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尔松:

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

这并不能保证任何时候启用任何数量的按钮。你不清楚这是否重要。