こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

イベント処理がうまくいきません。

java初心者です。
スタートボタンをクリックするとトランプ52枚表示されるようにしたいのですが、
1枚も表示されず、原因もよく分からないため苦労してます。
よろしくお願い致します。
以下は、プログラムです。

import java.awt.Color;
import java.awt.Dimension;
import java.awt.*;
import javax.swing.*;
import java.io.*;
import javax.imageio.*;
import java.awt.Graphics;
import java.awt.Font;
import javax.swing.JButton;
import java.awt.Container;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.event.*;

public class narabi2 extends JPanel{
JButton btn1,btn2,btn3;
static Image img[] = new Image[52];
public static void main(String[] args) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
f.setResizable(true);
f.setVisible(true);
new narabi2();
}

public narabi2(){

btn1 = new JButton("スタート");
this.add(btn1);
btn1.addActionListener(new ev());

btn2 = new JButton("ランキング");
this.add(btn2);
btn2.addActionListener(new ev());

btn3 = new JButton("ログアウト");
this.add(btn3);
btn3.addActionListener(new ev());
JFrame f = new JFrame();
f.setSize(900,840);
f.getContentPane().setBackground(new Color(0,100,0));
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
f.setResizable(true);
f.setVisible(true);
f.add(this);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
btn1 = new JButton("スタート");
this.add(btn1);
btn1.addActionListener(new ev());

btn2 = new JButton("ランキング");
this.add(btn2);
btn2.addActionListener(new ev());

btn3 = new JButton("ログアウト");
this.add(btn3);
btn3.addActionListener(new ev());
setBackground(new Color(0,100,0));
int i;               //カードを並べる処理
int x = 0,y=0;
for (i = 0; i < 52; i++) {
g.drawImage(img[i], x, y, null);
x = x + 100;
if(x>=900){
x=0;
y=y+140;
}
}
}

class ev implements ActionListener{
public void actionPerformed(ActionEvent m){

if(m.getSource()==btn1) //スタート
{
//public static void main(String[] args) {
// 画像ファイルの読み込み
int i, j;
int no = 0;
String c[] = {"s","h","c","d"};
try {
for(i = 0; i < 4; i++) {
for(j = 1; j <= 13; j++) { //String filename = "cards.png";
String filename = String.format("cards/%s%02d.png", c[i], j);
img[no] = ImageIO.read(new File(filename));
no++;
}
}
}
catch(Exception e) {
System.out.println(e);
System.exit(0);
}

// シャッフル
Image w;
for (i = 51; i >= 0; i--) {
j = (int)(Math.random() * (i + 1));
w = img[i];
img[i] = img[j];
img[j] = w;
}
}
/*public void paintComponent(Graphics g) {
super.paintComponent(g);
int i;
int x = 0,y=0;
for (i = 0; i < 52; i++) {
g.drawImage(img[i], x, y, null);
x = x + 100;
if(x>=900){
x=0;
y=y+140;
}
}
}*/
}
/*else if(m.getSource()==btn2) //ランキング
{

}
else if(m.getSource()==btn3) //ログアウト
{

}

}*/
}
}

投稿日時 - 2014-08-08 23:49:44

QNo.8709709

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

8人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

それなら、まずは1枚だけを表示するプログラムを作ってみましょう。

投稿日時 - 2014-08-10 22:57:46

あなたにオススメの質問