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);
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.