ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Java質問&情報提供サイトコミュのカードレイアウトについてご教授ください

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして!カードレイアウトについてわからない事があったので質問させていただきます

現在音楽ゲームを作ろうと思っています。(まだ完成には程遠いですが)

画面遷移はカードレイアウトで行おうとして、試しにテストプログラムを作ってみたのですが、うまくいきません…


画面1の「ゲームを始める」ボタンで画面2へ遷移→画面2の「決定」ボタンを押したら「テスト」の文字列が右から左に向かって流れる&音楽が再生される

というのをイメージしてテストプログラムを作りました。起動して確かめてみたら画面1の「ゲームを始める」ボタンをおしても画面2に遷移しないでプログラムがとまってしまいます…

------------プログラムソース-----------------
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.applet.*;
import javax.swing.*;


public class Test extends Applet implements Runnable,ActionListener{

private static final long serialVersionUID = 1L;

public static void main(String[] args){
//フレームの定義
JFrame frame = new JFrame();
Test app =new Test();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(100, 100, 640, 510);
frame.setTitle("模擬テスト");
frame.setVisible(true);
app.init();
app.start();
frame.add(app);
frame.show();

}



Thread thread;
int x, y;
JPanel cardPanel;
JPanel card1,card2;
JButton kettei,button1;

CardLayout layout;
AudioClip ac;


public void init(){

this.ac = Applet.newAudioClip(Tatuzin.class.getResource("翼をください.wav"));


thread = null;
x = getSize().width;
y = getSize().height/3;

//////////////////////////画面1////////////////////////////

JPanel card1 = new JPanel();
Button button1 = new Button("ゲームを始める");
card1.add(button1);

//////////////////////////画面2////////////////////////////////////

JPanel card2 = new JPanel();

Button Kettei = new Button("決定");


card2.add(Kettei);



/////////////////////////カードレイアウトの設定////////////////////
JPanel cardPanel = new JPanel();
CardLayout layout= new CardLayout();
cardPanel.setLayout(layout);
cardPanel.add(card1, "1");
cardPanel.add(card2, "2");


this.add(cardPanel);

}

public void start(){

if (thread == null){
thread = new Thread(this);

}
}

public void run(){

while(true){

x=x-10;

repaint();

try{
thread.sleep(75);
}
catch(InterruptedException exc){
}
}
}




///////ボタン動作への対応////////////

public boolean action(Event ev,Object arg){

if(ev.target instanceof Button){
if(arg.equals("ゲームを始める")){
layout.next(cardPanel);
}if(arg.equals("決定")){
ac.play();
thread.start();

}

}
return true;
}
public void paint(Graphics grp){
grp.setFont(new Font(null,Font.PLAIN,32));
grp.drawString("test", x, y);

}

public void actionPerformed(ActionEvent e) {

}
}
----------終わり---------------
遷移してくれないので、カードレイアウトの部分がおかしいのかな?と思いいろいろ試してみたのですがうまくいきません…

どこを改善すれば画面が遷移してくれるようになるのでしょうか?

ご教授よろしくお願いします。

コメント(4)

ボタンがただのはりぼてになっていませんか?
> いしかわさん

はりぼて…ですか?
つまり↑のプログラムではボタンは存在してるだけで役に立っていないということでしょうか?
大変申し訳ありません。自己解決しました!
考えて下さった皆様、ありがとうございましたm(_ _)m
解決されたようで何よりです。

えと、ついでなので。
public boolean action(Event ev,Object arg){
の使用は推奨されていないようです。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Java質問&情報提供サイト 更新情報

Java質問&情報提供サイトのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング