Java poker implementation
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

AppearancePanel.java 6.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. /*
  2. * Copyright (c) Chris 'MD87' Smith, 2007-2008. All rights reserved.
  3. *
  4. * This code may not be redistributed without prior permission from the
  5. * aforementioned copyright holder(s).
  6. */
  7. package com.md87.cardgame.config;
  8. import com.md87.cardgame.config.cards.*;
  9. import java.awt.Color;
  10. import java.awt.Graphics;
  11. import java.awt.Graphics2D;
  12. import java.awt.event.ActionEvent;
  13. import java.awt.event.ActionListener;
  14. import java.awt.image.BufferedImage;
  15. import java.io.IOException;
  16. import javax.imageio.ImageIO;
  17. import javax.swing.BorderFactory;
  18. import javax.swing.JComboBox;
  19. import javax.swing.JLabel;
  20. import javax.swing.JPanel;
  21. import javax.swing.JSpinner;
  22. import javax.swing.SpinnerNumberModel;
  23. import javax.swing.event.ChangeEvent;
  24. import javax.swing.event.ChangeListener;
  25. import net.miginfocom.swing.MigLayout;
  26. /**
  27. *
  28. * @author Chris
  29. */
  30. public class AppearancePanel extends JPanel implements ActionListener, ChangeListener {
  31. private static final long serialVersionUID = 1;
  32. private final PreviewPanel preview = new PreviewPanel();
  33. private final JComboBox frontCombo = new JComboBox();
  34. private final JComboBox backCombo = new JComboBox();
  35. private final JSpinner redSpinner = new JSpinner(new SpinnerNumberModel(0, 0, 255, 1));
  36. private final JSpinner greenSpinner = new JSpinner(new SpinnerNumberModel(100, 0, 255, 1));
  37. private final JSpinner blueSpinner = new JSpinner(new SpinnerNumberModel(0, 0, 255, 1));
  38. public AppearancePanel() {
  39. setLayout(new MigLayout("fill"));
  40. frontCombo.addItem(new ClassicFront1());
  41. frontCombo.addItem(new ClassicFront2());
  42. frontCombo.addItem(new OcaWhiteFront());
  43. backCombo.addItem(new ClassicBack1());
  44. backCombo.addItem(new ClassicBack2());
  45. backCombo.addItem(new OcaBlueHatchBack());
  46. backCombo.addItem(new OcaRedHatchBack());
  47. backCombo.addItem(new OcaBlueCardsBack());
  48. backCombo.addItem(new OcaRedCardsBack());
  49. backCombo.addItem(new OcaBlueSuits1Back());
  50. backCombo.addItem(new OcaBlueSuits2Back());
  51. backCombo.addItem(new OcaRedSuits1Back());
  52. backCombo.addItem(new OcaRedSuits2Back());
  53. frontCombo.addActionListener(this);
  54. backCombo.addActionListener(this);
  55. redSpinner.addChangeListener(this);
  56. greenSpinner.addChangeListener(this);
  57. blueSpinner.addChangeListener(this);
  58. final JPanel optionsPanel = new JPanel();
  59. final JPanel previewPanel = new JPanel();
  60. final JPanel colourPanel = new JPanel();
  61. optionsPanel.setBorder(BorderFactory.createTitledBorder("Card style"));
  62. optionsPanel.setLayout(new MigLayout("fillx"));
  63. optionsPanel.add(new JLabel("Front:"));
  64. optionsPanel.add(frontCombo, "growx");
  65. optionsPanel.add(new JLabel("Back:"));
  66. optionsPanel.add(backCombo, "growx");
  67. colourPanel.setBorder(BorderFactory.createTitledBorder("Background colour"));
  68. colourPanel.setLayout(new MigLayout("fillx"));
  69. colourPanel.add(new JLabel("Red:"));
  70. colourPanel.add(redSpinner, "growx");
  71. colourPanel.add(new JLabel("Green:"));
  72. colourPanel.add(greenSpinner, "growx");
  73. colourPanel.add(new JLabel("Blue:"));
  74. colourPanel.add(blueSpinner, "growx");
  75. previewPanel.setBorder(BorderFactory.createTitledBorder("Preview"));
  76. previewPanel.setLayout(new MigLayout());
  77. previewPanel.add(preview, "grow, push");
  78. add(optionsPanel, "growx, wrap");
  79. add(colourPanel, "growx, wrap");
  80. add(previewPanel, "growx, growy");
  81. }
  82. /** {@inheritDoc} */
  83. @Override
  84. public void actionPerformed(final ActionEvent e) {
  85. preview.repaint();
  86. }
  87. /** {@inheritDoc} */
  88. @Override
  89. public void stateChanged(final ChangeEvent e) {
  90. preview.repaint();
  91. }
  92. public String getBackName() {
  93. return ((CardStyle) backCombo.getSelectedItem()).getFolderName();
  94. }
  95. public String getFrontName() {
  96. return ((CardStyle) frontCombo.getSelectedItem()).getFolderName();
  97. }
  98. public Color getColour() {
  99. return new Color((Integer) redSpinner.getValue(),
  100. (Integer) greenSpinner.getValue(), (Integer) blueSpinner.getValue());
  101. }
  102. private class PreviewPanel extends JPanel {
  103. public PreviewPanel() {
  104. super(new MigLayout("fill"));
  105. }
  106. @Override
  107. public void paint(final Graphics g) {
  108. g.setColor(AppearancePanel.this.getColour());
  109. g.fillRect(0, 0, getWidth(), getHeight());
  110. final String backFile = "/com/md87/cardgame/res/backs/"
  111. + ((CardStyle) backCombo.getSelectedItem()).getFolderName() + ".png";
  112. final String frontFile1 = "/com/md87/cardgame/res/fronts/"
  113. + ((CardStyle) frontCombo.getSelectedItem()).getFolderName() + "/sace.png";
  114. final String frontFile2 = "/com/md87/cardgame/res/fronts/"
  115. + ((CardStyle) frontCombo.getSelectedItem()).getFolderName() + "/hdeuce.png";
  116. final String frontFile3 = "/com/md87/cardgame/res/fronts/"
  117. + ((CardStyle) frontCombo.getSelectedItem()).getFolderName() + "/djack.png";
  118. try {
  119. final BufferedImage front1 = ImageIO.read(getClass().getResource(frontFile1));
  120. final BufferedImage front2 = ImageIO.read(getClass().getResource(frontFile2));
  121. final BufferedImage front3 = ImageIO.read(getClass().getResource(frontFile3));
  122. final BufferedImage back1 = ImageIO.read(getClass().getResource(backFile));
  123. final int width = front1.getWidth();
  124. final int height = front1.getHeight();
  125. final int offsetX = (getWidth() - width * 4 - 30) / 2;
  126. final int offsetY = (getHeight() - height) / 2;
  127. ((Graphics2D) g).drawImage(front1, offsetX, offsetY, offsetX + width,
  128. offsetY + height, 0, 0, width, height, this);
  129. ((Graphics2D) g).drawImage(front2, offsetX + width + 10, offsetY,
  130. offsetX + 2 * width + 10, offsetY + height, 0, 0, width, height, this);
  131. ((Graphics2D) g).drawImage(front3, offsetX + 2 * (width + 10), offsetY,
  132. offsetX + 3 * width + 20, offsetY + height, 0, 0, width, height, this);
  133. ((Graphics2D) g).drawImage(back1, offsetX + 3 * (width + 10), offsetY,
  134. offsetX + 4 * width + 30, offsetY + height, 0, 0, back1.getWidth(),
  135. back1.getHeight(), this);
  136. } catch (IOException ex) {
  137. ex.printStackTrace();
  138. }
  139. }
  140. }
  141. }