自分のThreadの使い方の練習のために簡単スロットマシンを作ってみようかと。

とりあえず入れ物だけ作りました。

敢えてクラス分けせず、JFrameを継承したクラスにどっちゃりとインターフェース乗っけてやってみようかと。

目算としては、KeyListenerのKeyPressedでThreadをstartさせて、多分そうすることで、Runnableのrunメソッドが動くはず、そこで無限ループでJTextFieldの中を変え続け、

ActionインターフェースのactionPerformedでボタンの押下を拾い、何らか用意するフラグを書き換える。

3つのフラグが書き換わったら、ループを抜ける、という仕組みで考えておりやす。

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import javax.swing.Action;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

public class Slot extends JFrame implementsAction, Runnable ,KeyListener{

//コンストラクタ

Slot(){

setTitle(“超簡単スロットマシン”);

setBounds(100, 100, 600, 300);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

getContentPane().setLayout(new BorderLayout());

//トップのラベル

JPanel p = new JPanel();

p.setBackground(Color.ORANGE);

JLabel label = new JLabel();

label.setText(“押忍!店長!  (スペースキーでスタート)”);

p.add(label);

getContentPane().add(p, BorderLayout.NORTH);

//トップのラベルここまで

//一番下のボタン

JPanel botomP = new JPanel();

botomP.setLayout(new GridLayout(1,3));

JButton btn1 = new JButton(“ストップ”);

JButton btn2 = new JButton(“ストップ”);

JButton btn3 = new JButton(“ストップ”);

btn1.setActionCommand(“stop1”);

btn1.addActionListener(this);

btn2.setActionCommand(“stop2”);

btn2.addActionListener(this);

btn3.setActionCommand(“stop3”);

btn3.addActionListener(this);

botomP.add(btn1);

botomP.add(btn2);

botomP.add(btn3);

getContentPane().add(botomP, BorderLayout.SOUTH);

JPanel centerP = new JPanel();

centerP.setLayout(new GridLayout(1,3));

JTextField field1 = new JTextField();

field1.setEnabled(false);

JTextField field2 = new JTextField();

field2.setEnabled(false);

JTextField field3 = new JTextField();

field3.setEnabled(false);

centerP.add(field1);

centerP.add(field2);

centerP.add(field3);

getContentPane().add(centerP, BorderLayout.CENTER);

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO 自動生成されたメソッド・スタブ

System.out.println(e.getActionCommand());

}

@Override

public void run() {

// TODO 自動生成されたメソッド・スタブ

}

@Override

public Object getValue(String key) {

// TODO 自動生成されたメソッド・スタブ

return null;

}

@Override

public void putValue(String key, Object value) {

// TODO 自動生成されたメソッド・スタブ

}

public static void main(String[] args) {

// TODO 自動生成されたメソッド・スタブ

Slot slot =new Slot();

slot.setVisible(true);

}

@Override

public void keyTyped(KeyEvent e) {

// TODO 自動生成されたメソッド・スタブ

}

@Override

public void keyPressed(KeyEvent e) {

// TODO 自動生成されたメソッド・スタブ

}

@Override

public void keyReleased(KeyEvent e) {

// TODO 自動生成されたメソッド・スタブ

}

}

今のところこんな感じ。