How can I get my Java Blackjack table to put a new card on the table when I sele
ID: 3853840 • 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.*;
{
private JButton deal;
private JButton stay;
private JButton hit;
private JLabel dslot1;
private JLabel dslot2;
private JLabel dslot3;
private JLabel dslot4;
private JLabel dslot5;
private JLabel pslot1;
private JLabel pslot2;
private JLabel pslot3;
private JLabel pslot4;
private JLabel pslot5;
private JTextField dscore;
private JTextField pscore;
private JLabel bg;
private int dealer = 1;
private Deck dk;
ImageIcon bj = new ImageIcon("BJ.JPG");
ImageIcon as = new ImageIcon("AS.JPG");
ImageIcon ss = new ImageIcon("7S.JPG");
ImageIcon ths = new ImageIcon("3S.JPG");
ImageIcon fos = new ImageIcon("4S.JPG");
ImageIcon fis = new ImageIcon("5S.JPG");
ImageIcon backofcard = new ImageIcon("backofcard.JPG");
public table()
{
dk = new Deck();
Container contentPane = getContentPane();
contentPane.setLayout(null);
contentPane.setBackground(Color.black);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("Blackjack 21");
setSize(750,700);
setResizable(false);
setLocation(100,25);
deal = new JButton("Deal");
deal.setBounds(150,600,75,25);
deal.addActionListener(this);
contentPane.add(deal);
stay = new JButton("Stay");
stay.setBounds(300,600,75,25);
stay.addActionListener(this);
contentPane.add(stay);
hit = new JButton("Hit");
hit.setBounds(450,600,75,25);
hit.addActionListener(this);
contentPane.add(hit);
dslot5 = new JLabel("");
dslot5.setBounds(250,50,107,148);
dslot5.setBorder(BorderFactory.createLineBorder(Color.pink));
097
contentPane.add(dslot5);
dslot4 = new JLabel("");
dslot4.setBounds(200,50,107,148);
slot4.setBorder(BorderFactory.createLineBorder(Color.yellow));
contentPane.add(dslot4);
dslot3 = new JLabel("");
dslot3.setBounds(150,50,107,148);
dslot3.setBorder(BorderFactory.createLineBorder(Color.green));
contentPane.add(dslot3);
dslot2 = new JLabel("");
dslot2.setBounds(100,150,200,300);
dslot2.setBorder(BorderFactory.createLineBorder(Color.blue));
contentPane.add(dslot2);
dslot1 = new JLabel("");
dslot1.setBounds(50,50,107,148);
dslot1.setBorder(BorderFactory.createLineBorder(Color.white));
contentPane.add(dslot1);
pslot5 = new JLabel("");
pslot5.setBounds(250,300,107,148);
pslot5.setBorder(BorderFactory.createLineBorder(Color.pink));
contentPane.add(pslot5);
pslot4 = new JLabel("");
pslot4.setBounds(200,300,107,148);
pslot4.setBorder(BorderFactory.createLineBorder(Color.yellow));
contentPane.add(pslot4);
pslot3 = new JLabel("");
pslot3.setBounds(150,300,107,148);
pslot3.setBorder(BorderFactory.createLineBorder(Color.green));
contentPane.add(pslot3);
pslot2 = new JLabel("");
pslot2.setBounds(100,300,107,148);
pslot2.setBorder(BorderFactory.createLineBorder(Color.blue));
contentPane.add(pslot2);
pslot1 = new JLabel("");
pslot1.setBounds(50,300,107,148);
pslot1.setBorder(BorderFactory.createLineBorder(Color.white));
contentPane.add(pslot1);
dscore = new JTextField("Dealers Score:");
dscore.setBounds(50,250,100,25);
dscore.addActionListener(this);
contentPane.add(dscore);
pscore = new JTextField("Players Score:");
pscore.setBounds(50,500,100,25);
pscore.addActionListener(this);
contentPane.add(pscore);
bg = new JLabel();
162
bg.setBounds(0,0,743,700);
bg.setBorder(BorderFactory.createLineBorder(Color.black));
contentPane.add(bg);
bg.setIcon(new ImageIcon("BJ.JPG"));
}
public static void main(String args[])
{
table frame = new table();
frame.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() instanceof JButton)
{
Button clicked = (JButton)e.getSource();
if(clicked == deal)
{
{
]
dslot1.setIcon(as);
pslot1.setIcon(ths);
dslot2.setIcon(backofcard);
pslot2.setIcon(fos);
}
}
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.