/** * constructor - creates and displays a new dialog box to obtain each player's bet before the game * process actually begins * * @param parent - reference to the parent frame of this box * @param modal - whether or not this box should be made modal (whether it MUST be dealt with * before anything else) * @param turnIndex - number to which player is currently betting; used to set the button colors */ public BetInputDialog(BlackJackFrame parent, boolean modal, int turnIndex) { super(parent, modal); this.parent = parent; inputPanel = new JPanel(); buttonsPanel = new JPanel(); betField = new JTextField(10); enterButton = new JButton("Bet!"); enterButton.setToolTipText("Enter your bet for this hand."); skipHandButton = new JButton("Skip Hand"); skipHandButton.setToolTipText("Choose to sit out this hand."); enterButton.addActionListener(this); skipHandButton.addActionListener(this); inputPanel.add(betField); buttonsPanel.add(enterButton); buttonsPanel.add(skipHandButton); setButtonColors(turnIndex); setLayout(new GridLayout(2, 1)); add(inputPanel); add(buttonsPanel); getRootPane().setDefaultButton(enterButton); setTitle( "Starting Hand " + parent.getCurrentHandNumber() + ", " + parent.getCurrentPlayer().getName() + "\'s turn"); setSize(300, 100); setLocationRelativeTo(null); setResizable(false); setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); setVisible(true); }
/** * actionPerformed - implementation of the ActionListener interface, providing actions to the two * buttons in the dialog box * * @param e - the ActionEvent fired by the JVM, used to determine the source of the click */ public void actionPerformed(ActionEvent e) { if (e.getSource() == enterButton) { try { int bet = Integer.parseInt(betField.getText()); if (bet < 1) { // make sure the bet is high enough JOptionPane.showMessageDialog( null, "Your bet must be one or higher. Please enter a valid bet.", "Invalid Bet", JOptionPane.ERROR_MESSAGE); return; } else if (bet > Math.min( parent.getBettingLimit(), parent.getCurrentPlayer().getMoney())) { // don't let user go over what they have JOptionPane.showMessageDialog( null, "You cannot bet that high. The maximum you can bet is $" + Math.min(parent.getBettingLimit(), parent.getCurrentPlayer().getMoney()) + ".\nPlease enter a valid bet.", "Invalid Bet", JOptionPane.ERROR_MESSAGE); return; } parent .getCurrentPlayer() .setBet(bet); // create the bet, and subtract it from the money amount parent.getCurrentPlayer().setMoney(parent.getCurrentPlayer().getMoney() - bet); setVisible(false); // dispose of this dialog } catch (NumberFormatException nfe) { // if user doesn't enter a correct number JOptionPane.showMessageDialog( null, "Invalid entry for bet.\nPlease enter a valid amount to bet.", "Invalid Bet", JOptionPane.ERROR_MESSAGE); return; } } else if (e.getSource() == skipHandButton) { // make player inactive for this hand parent.getCurrentPlayer().setActive(false); parent.getCurrentPlayer().setBet(0); setVisible(false); // dispose of this dialog } }