java 游戏牌 程序是哪里错了?

package test;

import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

@SuppressWarnings("serial")
public class Test extends JFrame {
final int PokerWidth=71;
final int PokerHeight=96;
//x代表牌大小 y代表花色
public void showPoker(int x[],int y[]) {
//读取Poker图片
BufferedImage rImg=null;
try{
rImg=ImageIO.read(new File("D:\\Poker.jpg"));
} catch(IOException e){
e.printStackTrace();
}
//JOptionPane.showMessageDialog(null, rimg.getWidth()+"");
//设置内存中图片显示大小
BufferedImage bImg=new BufferedImage(rImg.getWidth(),rImg.getHeight

(),BufferedImage.TYPE_INT_ARGB);
//将读取的图片画到内存图片中去
bImg.createGraphics().drawImage(rImg,0,0,bImg.getWidth(),bImg.getHeight(),null);
BufferedImage[] pokers=new BufferedImage[4];
//截取内存图片中的一块区域(定位牌)-> 共四张牌
for (int i=0;i<pokers.length;i++)
pokers[i]=bImg.getSubimage( x[i]*71, y[i]*96, PokerWidth,PokerHeight );

//设置布局为两行三列(间隙为 0 ,5)
setLayout(new GridLayout(2,3,0,5));

//第一行显示的信息
JLabel sPlayer1_JL=new JLabel("玩家1");
//sPlayer1_JL.setAlignmentX(RIGHT_ALIGNMENT);
//sPlayer1_JL.setHorizontalTextPosition( SwingConstants.RIGHT);
sPlayer1_JL.setHorizontalAlignment( JTextField.RIGHT);
add(sPlayer1_JL);
add(new JLabel(new ImageIcon(pokers[0])));
add(new JLabel(new ImageIcon(pokers[1])));
//第二行显示的信息
JLabel sPlayer2_JL=new JLabel("玩家2");
sPlayer2_JL.setHorizontalAlignment( JTextField.RIGHT);
add(sPlayer2_JL);
//add(sPlayer1_JL);
add(new JLabel(new ImageIcon(pokers[2])));
add(new JLabel(new ImageIcon(pokers[3])));
//add(new JLabel(new ImageIcon(bImg)));
//显示窗体
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocation(10, 10);
setSize(rImg.getWidth(),rImg.getHeight());
// setLocationRelativeTo(null);
setVisible(true);
}

public static void main(String[] args) {
//随机选取四张牌
int[] deck = new int[52];

for(int i=0;i<deck.length;i++) deck[i]=i;
//打乱牌序
for(int i=0;i<deck.length;i++){
int index=(int)(Math.random()*deck.length);
deck[i]=deck[i]^deck[index];
deck[index]=deck[index]^deck[i];
deck[i]=deck[i]^deck[index];
}
//选取四张牌
int[] suits={0,0,0,0};
int[] ranks=new int[13];
for(int i=0;i<4;i++){
suits[i]=deck[i]/13;
ranks[i]=deck[i]%13;
}
//显示Poker
Test test=new Test();
test.showPoker(ranks,suits);
}
}

java test.Test
有包名的,必须带包名运行。追问

还是不行  é‚£ä¸ªtest包是用来干嘛的?删掉可以么?

追答

你的文件在哪个目录?
要在项目的根目录执行java命令。
test包是你程序中写的。不是我要加上的。有包名的时候,运行必须带上包名。否则调不到的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-20
路径不对,你用cd 命令 切换到Test文件所在目录 再运行。

你直接运行的结果是 在E盘根目录下去找Test这个文件。
第2个回答  2015-05-20

相似回答