Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 21点窗口程序不会出现_Java_Jframe_Actionlistener_Blackjack - Fatal编程技术网

Java 21点窗口程序不会出现

Java 21点窗口程序不会出现,java,jframe,actionlistener,blackjack,Java,Jframe,Actionlistener,Blackjack,我已经指定使用老师提供的JFrame和卡片图像编写一个基本的21点窗口程序。我把所有我认为应该有用的东西都写出来了,但是当我编译它时,它根本没有显示出来。我错过什么了吗 当我编译程序时,它成功地编译了,但是,在我执行我的BlackJack.java库中的文件后,什么也不执行,我的程序也不显示。在命令提示符中,它显示已执行,但屏幕上没有显示BlackJack/JFrame 我尝试过调整BlackJack类和MyJFrame类,以便JFrame立即执行,但它似乎不起作用。 在之前的作业中,我们被要求

我已经指定使用老师提供的JFrame和卡片图像编写一个基本的21点窗口程序。我把所有我认为应该有用的东西都写出来了,但是当我编译它时,它根本没有显示出来。我错过什么了吗

当我编译程序时,它成功地编译了,但是,在我执行我的BlackJack.java库中的文件后,什么也不执行,我的程序也不显示。在命令提示符中,它显示已执行,但屏幕上没有显示BlackJack/JFrame

我尝试过调整BlackJack类和MyJFrame类,以便JFrame立即执行,但它似乎不起作用。 在之前的作业中,我们被要求为21点类编写一个JFrame,我的很好。所以我觉得21点工具造成了问题

注意:我们得到了一个名为DeckOfCards的java文件和用于卡片图像的gif文件

import javax.swing.*;
import java.awt.*; 
import java.awt.event.*;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Vector;
public class BlackJack extends JFrame implements ActionListener
{
private JLabel[] lblPlayer = new JLabel[8];
private JLabel[] lblDealer = new JLabel[8];

private JPanel pnlPlayDeal = new JPanel(new GridLayout(2,8)); 

private DeckOfCards deck = new DeckOfCards();

private Vector <String> playerCardNames = new Vector<String>();
private Vector <String> dealerCardNames = new Vector<String>();

private ImageIcon[] icoPlayerHand = new ImageIcon[8];
private ImageIcon[] icoDealerHand = new ImageIcon[8];

private JButton btnDeal = new JButton("Deal");
private JButton btnPlayer = new JButton("Player");
private JButton btnDealer = new JButton("Dealer");
private JButton btnNew = new JButton("New");
private JButton btnAuthor = new JButton("Author");

private JPanel pnlButtons = new JPanel(new FlowLayout());

private int count = 1;
private int playerval = 0;
private int dealerval = 0;

public void MyJFrame()
{
    for(int i=0;i<8;i++)
    {
        lblPlayer[i] = new JLabel("Player");
        lblDealer[i] = new JLabel("Dealer");
    }
    this.setLocationRelativeTo(null);
    this.setSize(800, 350);
    this.setVisible(true);   
    add(pnlPlayDeal,BorderLayout.CENTER);
    add(pnlButtons,BorderLayout.SOUTH);
    this.addLabels();
    this.addButtons();
    registerListeners();
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}    
public void addLabels()
{
    for(int i= 0;i<8;i++)
    {
        pnlPlayDeal.add(lblPlayer[i]);
    }
    for(int i= 0;i<8;i++)
    pnlPlayDeal.add(lblDealer[i]);        
}    
public void addButtons()
{
    pnlButtons.add(btnDeal);
    pnlButtons.add(btnPlayer);
    btnPlayer.setEnabled(false);
    pnlButtons.add(btnDealer);
    btnDealer.setEnabled(false);
    pnlButtons.add(btnNew);
    btnNew.setEnabled(false);
    pnlButtons.add(btnAuthor);
}    
public void registerListeners()
{
    btnDeal.addActionListener(this);
    btnPlayer.addActionListener(this);
    btnDealer.addActionListener(this);
    btnNew.addActionListener(this);
    btnAuthor.addActionListener(this);
}    
public int findRank(String x)
{
    int result=0;
    if(x.startsWith("Two"))
       result=2;
    else if(x.startsWith("Three"))
       result=3;
    else if(x.startsWith("Four"))
        result=4;
    else if(x.startsWith("Five"))
        result=5;
    else if(x.startsWith("Six"))
        result=6;
    else if(x.startsWith("Seven"))
        result=7;
    else if(x.startsWith("Eight"))
        result=8;
    else if(x.startsWith("Nine"))
        result=9;
    else if(x.startsWith("Ten"))
        result=10;
    else if(x.startsWith("Jack"))
        result=10;
    else if(x.startsWith("Queen"))
        result=10;
    else if(x.startsWith("King"))
        result=10;
    else if(x.startsWith("Ace"))
        result=11;
    return result;
}
public int getVal (Vector<String> v)
{
    int total=0;
    Iterator <String> iter = v.iterator();
    while(iter.hasNext())
    {
        total+= findRank(iter.next());
    }
    return total;
}
public void deal()
{
    deck.shuffle();
    playerCardNames.add(deck.deal());
    playerCardNames.add(deck.deal());
    dealerCardNames.add(deck.deal());
    dealerCardNames.add(deck.deal());

    icoPlayerHand[0] = new ImageIcon("cardImages/"
            +playerCardNames.get(0)+".gif");
    icoPlayerHand[1] = new ImageIcon("cardImages/"
            +playerCardNames.get(1)+".gif");
    lblPlayer[0].setIcon(icoPlayerHand[0]);
    lblPlayer[1].setIcon(icoPlayerHand[1]);

    icoDealerHand[0] = new ImageIcon("cardImages/"+
            dealerCardNames.get(0)+".gif");
    icoDealerHand[1] = new ImageIcon("cardImages/card.gif");
    lblDealer[0].setIcon(icoDealerHand[0]);
    lblDealer[1].setIcon(new ImageIcon("cardImages/card.gif"));

    btnDeal.setEnabled(false);
    btnPlayer.setEnabled(true);
    count ++;
}    
public void player()
{
    while(getVal(playerCardNames)<22)
    {
        String choice = JOptionPane.showInputDialog(null, "you have " 
                +getVal(playerCardNames)+" h/s",null);
        if(choice.equalsIgnoreCase("h"))
        {
            playerCardNames.add(deck.deal());
            icoPlayerHand[count] = new ImageIcon("cardImages/"
                    +playerCardNames.lastElement()+".gif");
            lblPlayer[count].setIcon(icoPlayerHand[count]);
            count++;
        }
        else
        break;
    }
    if(getVal(playerCardNames)>21)
    {
        JOptionPane.showMessageDialog(this, "You Busted");
        btnPlayer.setEnabled(false);
        btnNew.setEnabled(true);
    }
    else
    {
        btnPlayer.setEnabled(false);
        btnDealer.setEnabled(true);
    }
}      
public void dealer()
{
    btnDealer.setEnabled(false);
    count=1;
    icoDealerHand[count] = new ImageIcon("cardImages/" 
             +dealerCardNames.lastElement()+".gif");
    lblDealer[1].setIcon(icoDealerHand[count]);
    count ++;
    while(getVal(dealerCardNames)<17)
    {
        dealerCardNames.add(deck.deal());
        icoDealerHand[count] = new ImageIcon("cardImages/" 
                +dealerCardNames.lastElement()+".gif");
        lblDealer[count].setIcon(icoDealerHand[count]);
        count ++;
    }
    if(getVal(dealerCardNames)>21)
        JOptionPane.showMessageDialog(this, "Dealer bust you won");
    else
    whoWon();
    btnNew.setEnabled(true);
}            
public void whoWon()
{
    if(getVal(playerCardNames)>getVal(dealerCardNames))
        JOptionPane.showMessageDialog(this,"You won");
    else
        JOptionPane.showMessageDialog(this,"You lost");
}    
public void newGame()
{
    this.setVisible(false);
    BlackJack game = new BlackJack();
}
public static void main(String[]args)
{
    MyJFrame table= new MyJFrame();
    BlackJack first = new BlackJack();
}
public void actionPerformed(ActionEvent e)
{
    if(e.getSource()==btnAuthor)
        ((JButton)e.getSource()).setText("Conner M");
    if(e.getSource()==btnDeal)
        deal();
    if(e.getSource()==btnPlayer)
        player();
    if(e.getSource()==btnDealer)
        dealer();
    if(e.getSource()==btnNew)
    {
        newGame();             
    }        
}
}
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
导入java.util.Iterator;
导入java.util.Scanner;
导入java.util.Vector;
公共类BlackJack扩展JFrame实现ActionListener
{
私有JLabel[]lblPlayer=新JLabel[8];
私有JLabel[]lbldaler=新JLabel[8];
private JPanel pnlPlayDeal=新JPanel(新网格布局(2,8));
专用卡牌组=新卡牌组();
私有向量playerCardNames=新向量();
私有向量dealerCardNames=新向量();
private ImageIcon[]icoPlayerHand=新的ImageIcon[8];
private ImageIcon[]ICodealHand=新的ImageIcon[8];
私有JButton btnDeal=新JButton(“交易”);
私有JButton btnPlayer=新JButton(“玩家”);
私人JButton btnDealer=新JButton(“经销商”);
私有JButton btnNew=新JButton(“新”);
私有JButton btnautor=新JButton(“作者”);
private JPanel pnlButtons=new JPanel(new FlowLayout());
私有整数计数=1;
私人int playerval=0;
私有int-dealval=0;
公共void MyJFrame()
{
对于(int i=0;iA)分析:

让我们开始手动执行您的代码,您的代码的起点是静态void main,在这里我可以看到MyFrame的对象正在初始化。然后BlackJack的对象正在初始化

B.问题:

  • 代码中没有声明的MyFrame类
  • Blackjack扩展了JFrame,因此您需要通过在MyJFrame()方法(而不是Blackjack的构造函数)中完成的setVisible()方法将其引用设置为可见
  • 方法,
    newGame()
    再次创建了一个新的BlackJack对象,但您还没有为此创建自己的构造函数。我认为应该将方法MyJFrame转换为BlackJack构造函数
  • C.可能的解决办法:

  • 从静态void main()中删除
    MyJFrame table=new MyJFrame();
  • 将方法
    void MyJFrame()
    转换为BlackJack的构造函数
  • 不要在main()方法中创建局部21点变量“first”,而是将其作为类成员(在main()外部声明),并在main()中初始化
  • 由于BlackJack的变量现在是类成员,因此在方法
    newGame()
    中,不要创建新的局部变量“first”,而是执行以下操作:
    first=new BlackJack();
  • 注意:您的代码可能有更多的错误。上述解决方案可能会解决您的问题,因为它没有显示帧。有多种方法可以纠正它,我现在只提供了可能的最佳方法。

    A.分析:

    让我们开始手动执行您的代码,您的代码的起点是静态void main,在这里我可以看到MyFrame的对象正在初始化。然后BlackJack的对象正在初始化

    B.问题:

  • 代码中没有声明的MyFrame类
  • Blackjack扩展了JFrame,因此您需要通过在MyJFrame()方法(而不是Blackjack的构造函数)中完成的setVisible()方法将其引用设置为可见
  • 方法,
    newGame()
    再次创建了一个新的BlackJack对象,但您还没有为此创建自己的构造函数。我认为应该将方法MyJFrame转换为BlackJack构造函数
  • C.可能的解决办法:

  • 从静态void main()中删除
    MyJFrame table=new MyJFrame();
  • 将方法
    void MyJFrame()
    转换为BlackJack的构造函数
  • 不要在main()方法中创建局部21点变量“first”,而是将其作为类成员(在main()外部声明),并在main()中初始化
  • 由于BlackJack的变量现在是类成员,因此在方法
    newGame()
    中,不要创建新的局部变量“first”,而是执行以下操作:
    first=new BlackJack();

  • 注意:您的代码可能有更多的错误。上述解决方案可能会解决您为什么不显示帧的问题。有多种方法可以纠正它,我现在只提供了可能的最佳方法。

    嗨,康纳,欢迎使用StackOverflow。您的问题没有我们可以帮助您的正确信息。例如,我们不知道what“当我编译它时,它根本不显示”意思是,你还没有告诉我们你已经做了什么来尝试和解决这个问题。阅读一下,然后更新你的问题:你试图实现什么,你试图做什么来解决它,你如何知道它不起作用。将你的例子简化为你只是试图展示一个JFrame。一旦你成功了,添加更多返回功能层。您可以找到在web上显示JFrames的简单示例,例如:设置Visible时注意(true)以及示例设置的时间和地点。请看一些可以帮助您的问题。如果它提出了一个您不确定的特定问题,请随时回来询问该问题。嗨,康纳,欢迎来到StackOverflow。您的问题没有我们可以帮助您的正确信息。例如,我们不知道是什么