Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

How can I get my Java Blackjack table to put a new card on the table when I sele

ID: 3853787 • Letter: H

Question

How can I get my Java Blackjack table to put a new card on the table when I select the hit button?

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class BlackjackTable3 extends JFrame {

  
JButton stayButton = new JButton("STAY");
JButton hitButton = new JButton("HIT");
JPanel mainPanel = new JPanel();

public BlackjackTable3() {
this.setTitle("Blackjack Test Table");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
//JPanel tablePanel = new JPanel();
ImageIcon pic = new ImageIcon("blackjackTableCanvas.jpg");
mainPanel.add(new JLabel(pic));
  
this.add(mainPanel, BorderLayout.PAGE_START);
this.setSize(1400,1400);
this.setVisible(true);
  
JPanel buttonPanel = new JPanel();
ActionListener pressChoice = new DecisionListener();
hitButton.addActionListener(pressChoice);
stayButton.addActionListener(pressChoice);
  
buttonPanel.setSize(300,150);
buttonPanel.add(hitButton,BorderLayout.WEST);
buttonPanel.add(stayButton,BorderLayout.EAST);
buttonPanel.setVisible(true);
this.add(buttonPanel, BorderLayout.SOUTH);
// this.add(hitButton, BorderLayout.WEST);
// this.add(stayButton, BorderLayout.EAST);
  
}
  

  
class DecisionListener implements ActionListener{
  
public void actionPerformed(ActionEvent a){
//code for hit/stay to go here
  
if(a.getSource() == hitButton){
System.out.println("YOU CHOSE HIT!");
add(new CardAdder3(new Card()));
}
else if(a.getSource() == stayButton){
System.out.println("YOU CHOSE STAY!");
}
  
}
}
  
public class CardAdder3 extends JComponent{

String val;
String suit;
  
  
public CardAdder3(Card card){
this.val = card.value.face;
this.suit = card.suit.toString();
String filename = this.fetchCardFileLabel();
JPanel p = new JPanel();
ImageIcon i = new ImageIcon("card deck\" + filename + ".png");
p.add(new JLabel(i));


}
  

public String fetchCardFileLabel(){
String first = null;
String second = suit.substring(0,1);
if(!val.equals("10"))
first = val.substring(0,1);
else
first = val.substring(0,2);
  
return "" + first + second;
  
}
}
  
  
public static void main(String[] args){
BlackjackTable3 b = new BlackjackTable3();

}
  
}

if I put the CardRender3 inside a frame, then I get a new frame, and I want the new card on the table image. How can I do that?

Explanation / Answer

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class BlackjackGUI extends JPanel
{
JPanel topPanel = new JPanel();
JPanel dcardPanel = new JPanel();
JPanel pcardPanel = new JPanel();
JTextPane winlosebox = new JTextPane();
JButton hitbutton = new JButton();
JButton dealbutton = new JButton();
JButton staybutton = new JButton();
JButton playagainbutton = new JButton();
JLabel dealerlabel = new JLabel();
JLabel playerlabel = new JLabel();
Hand dealer = new Hand();
Hand player = new Hand();
Blackjack game = new Blackjack(dealer,player);
JLabel playercard1;
JLabel playercard2;
JLabel playercardhit;
JLabel dealercard0;
JLabel dealercard2;
JLabel dealercard1;
JLabel dealercardhit;
public BlackjackGUI ()
{
  
topPanel.setBackground(new Color(0, 122, 0));
dcardPanel.setBackground(new Color(0, 122, 0));
pcardPanel.setBackground(new Color(0, 122, 0));
topPanel.setLayout(new FlowLayout());
winlosebox.setText(" ");
winlosebox.setFont(new java.awt.Font("Helvetica Bold", 1, 20));
dealbutton.setText(" Deal");
dealbutton.addActionListener(new dealbutton());
hitbutton.setText(" Hit");
hitbutton.addActionListener(new hitbutton());
hitbutton.setEnabled(false);
staybutton.setText(" Stay");
staybutton.addActionListener(new staybutton());   
staybutton.setEnabled(false);
playagainbutton.setText(" Play Again");
playagainbutton.addActionListener(new playagainbutton());
playagainbutton.setEnabled(false);
dealerlabel.setText(" Dealer: ");
playerlabel.setText(" Player: ");
topPanel.add(winlosebox);
topPanel.add(dealbutton);
topPanel.add(hitbutton);
topPanel.add(staybutton);
topPanel.add(playagainbutton);
pcardPanel.add(playerlabel);
dcardPanel.add(dealerlabel);
setLayout(new BorderLayout());
add(topPanel,BorderLayout.NORTH);
add(dcardPanel,BorderLayout.CENTER);
add(pcardPanel,BorderLayout.SOUTH);
  
}
public void display()
{
JFrame myFrame = new JFrame("BlackJack");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setContentPane(this);
myFrame.setPreferredSize(new Dimension(700,550));
myFrame.pack();
myFrame.setVisible(true);
  
}
class dealbutton implements ActionListener {
public void actionPerformed(ActionEvent e) {
dcardPanel.add(dealerlabel);
pcardPanel.add(playerlabel);
dealercard0 = new JLabel(new ImageIcon("back.jpg"));

game.dealInitialCards();
Card dcard=null;
Iterator<Card> dscan = (dealer.inHand).iterator();
int count = 0;
while (dscan.hasNext())
{
dcard = dscan.next();
if(count==0)
dealercard1 = new JLabel(dcard.getimage());
else
dealercard2 = new JLabel(dcard.getimage());
  
count++;
}
Iterator<Card> pscan = (player.inHand).iterator();
count = 0;
while (pscan.hasNext())
{
Card pcard = pscan.next();
if(count==0)
playercard1 = new JLabel(pcard.getimage());
else
playercard2 = new JLabel(pcard.getimage());

count++;
}
dcardPanel.add(dealercard0);
dcardPanel.add(dealercard2);
pcardPanel.add(playercard1);
pcardPanel.add(playercard2);
dealerlabel.setText(" Dealer: "+ dcard.getvalue());
playerlabel.setText(" Player: " + game.handValue(player));
  
hitbutton.setEnabled(true);
staybutton.setEnabled(true);
dealbutton.setEnabled(false);
if(game.blackj())   
{
hitbutton.setEnabled(false);
staybutton.setEnabled(false);
dealbutton.setEnabled(false);
playagainbutton.setEnabled(true);
winlosebox.setText("BlackJack");
}
add(dcardPanel,BorderLayout.CENTER);
add(pcardPanel,BorderLayout.SOUTH);
}
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote