Java显示卡

Java显示卡,java,swing,graphics,Java,Swing,Graphics,我正在编写一个程序,模拟一轮纸牌游戏战争 我不知道如何以图形方式显示卡片(数字/颜色/套装) import java.util.*;//扫描器类 导入java.awt.*; 导入javax.swing.*; //类定义 班级项目4{ //主要方法定义 公共静态void main(字符串[]args){ //对象和变量声明 JFrame-win; 容器内容窗格; 图形g; 字符串player1Name、player2Name、scoreWinLoss; //这是图形部分,所有图形(到目前为止)都正

我正在编写一个程序,模拟一轮纸牌游戏战争

我不知道如何以图形方式显示卡片(数字/颜色/套装)

import java.util.*;//扫描器类
导入java.awt.*;
导入javax.swing.*;
//类定义
班级项目4{
//主要方法定义
公共静态void main(字符串[]args){
//对象和变量声明
JFrame-win;
容器内容窗格;
图形g;
字符串player1Name、player2Name、scoreWinLoss;
//这是图形部分,所有图形(到目前为止)都正常工作。
win=新JFrame(“战争游戏”);
win.setSize(900600);
win.setLocation(100100);
win.setVisible(true);
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
白色=新颜色(255、255、255);
颜色白色2=新颜色(255、255、255);
黑色=新颜色(0,0,0);
颜色黑色2=新颜色(0,0,0);
contentPane=win.getContentPane();
//另外,如果有人知道如何改变这一点。挫折地(颜色。绿色)从石灰绿色到森林(卡片表)绿色,那将是可怕的!
contentPane.setBackground(颜色为绿色);
g=contentPane.getGraphics();
Font Font=新字体(“衬线”,Font.BOLD,25);
g、 setFont(字体);
试一试{
睡眠(200);
}捕获(例外e){}
player1Name=JOptionPane.showInputDialog(null,“player1,你叫什么名字?”);
player2Name=JOptionPane.showInputDialog(null,“player2,你叫什么名字?”);
g、 设置颜色(黑色);
g、 抽绳(演奏者姓名,220,35);
g、 setColor(black2);
g、 抽绳(player2Name,625,35);
g、 设置颜色(白色);
g、 fillRoundRect(125、50、250、450、20、20);
g、 setColor(white2);
g、 fillRoundRect(525,50250,450,20,20);
g、 设置颜色(黑色);
g、 drawRoundRect(125、50、250、450、20、20);
g、 setColor(black2);
g、 drawRoundRect(525、50250、450、20、20);
//这就是让人困惑的地方,这些东西都不起作用了
int card1Max=14,card1Min=2,card2Max=14,card2Min=2,randomNum1=0,randomNum2=0;
g、 设置颜色(黑色);
g、 绘图(随机数m1、150、35);
g、 setColor(black2);
g、 绘图(随机数m2、500、35);
Random randomPicker=新随机(System.currentTimeMillis());
randomNum1=随机选取器.nextInt(card1Max-card1Min+1)+card1Min;
randomNum2=随机选取器.nextInt(card2Max-card2Min+1)+card2Min;
if(randomNum1randomNum2){
scoreWinLoss=player1Name+“赢了!”;
}else if(randomNum1==randomNum2){
scoreWinLoss=“平局!再次比赛以确定胜利者。”;
}

不要像现在这样玩图形对象:

   g.setColor(black);
   g.drawString(player1Name, 220, 35);
这太糟糕了


相反,您应该查看布局。查看GridLayoutGridBagLayout。这些面板允许您将JPanel组织为网格。使用这些面板,您可以设置背景色并添加文本(通过JLabel).

如果我理解您的问题:简单地说,您可以将
JPanel
CardLayout
一起使用,然后使用
JLabel.setImageIcon(ImageIcon ImageIcon)从web上查找卡片图片
JLabel的方法在其上设置此图片,并通过
卡片布局
一起打开卡片。

为什么要将此标记为
JavaScript
g=contentPane.getGraphics();
-您不应该这样做。创建
JPanel
,覆盖它的
paintComponent(图形)
method,然后在那里做自定义绘图(别忘了先在里面调用
super.paintComponent(Graphics)
。@LuxxMiner为什么编辑帖子而不删除它?@Berendschot我从来不喜欢编辑标签之类的东西,也许OP只是忘了发布JS代码(尽管我知道这不太可能).我刚刚编辑了我100%确信编辑不会错的部分(=代码格式)。我现在也知道我的推理是愚蠢的,因为如果OP忘记发布代码不会改变问题的当前状态不是关于JS的事实…我下次会做得更好;)
   g.setColor(black);
   g.drawString(player1Name, 220, 35);