javaのGUIの練習のためにルーレットを作りました。
Gui.jajva
package sample;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import java.util.Random;
import java.util.Arrays;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.Container;
import java.awt.BorderLayout;
public class Gui extends JFrame{
static String theName="hello world";
int count=11;
String[] names = {"Aさん","Bさん","Cさん" ,"Dさん","Eさん","Fさん","Gさん","Hさん","Iさん","Jさん","Kさん"};//ルーレット
public Gui() {
// TODO 自動生成されたメソッド・スタブ
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,640,480);
JButton btn1=new JButton("ボタン");
add(btn1); /// ボタン追加
setSize(250,250);
JLabel label = new JLabel(theName);
JPanel p = new JPanel();
p.add(label); //ラベル追加
Container contentPane = getContentPane();
contentPane.add(p, BorderLayout.NORTH);
btn1.addActionListener(new ActionListener(){
@Override
/**
* ルーレット乱数部分
*/
public void actionPerformed(ActionEvent e) {
int i=0;
count--;
do{ i = rnd();
if(count==0) {
System.out.println("全員回答しました");
names[0]="Aさん";
names[1]="Bさん";
names[2]="Cさん";
names[3]="Dさん";
names[4]="Eさん";
names[5]="Fさん";
names[6]="Gさん";
names[7]="Hさん";
names[8]="Iさん";
names[9]="Jさん";
names[10]="Kさん";
count=11;
break;
}
}while(names[i]=="0");
btn1.setLabel(names[i]);
System.out.println("のこり"+count +"人");
names[i]="0";
}
private int rnd() {
// TOD動生成されたメソッド・スタブ
Random rand = new Random();
int val = (rand.nextInt(11));
return val;
}
});
}
public static void main(String[] args) {
Gui frm=new Gui();
frm.setVisible(true);
}
}
ボタンを押すとボタンのところに名前が表示され、1回表示されたら全員表示されるまで表示できないようになっています。
本当はボタンを押したら画面の別の場所に名前が表示されるようにしたかったのですが、ラベルには処理に合わせた変更ができないようだったのでボタンに表示をしました。