diff --git a/src/main/java/views/CardButton.java b/src/main/java/views/CardButton.java new file mode 100644 index 0000000..bb64898 --- /dev/null +++ b/src/main/java/views/CardButton.java @@ -0,0 +1,28 @@ +package views; + +import javax.swing.*; +import javax.swing.border.LineBorder; + +import java.awt.*; + +import static views.Constants.*; +import static views.Constants.CARD_HEIGHT; + +public class CardButton extends JButton { + final int UNSELECTED_THICKNESS=1; + final int SELECTED_THICKNESS=4; + public CardButton(String text) { + this.setText(text); + this.setBorder(new LineBorder(UNSELECTED_COLOR, UNSELECTED_THICKNESS, true)); + this.setPreferredSize(new Dimension(CARD_WIDTH, CARD_HEIGHT)); + this.setFont(new Font("MS ゴシック", Font.BOLD, 14)); + } + //選択状態の切り替え + public void setEnabledSelection(boolean enabledSelection){ + if(enabledSelection){ + this.setBorder(new LineBorder(SELECTED_COLOR, SELECTED_THICKNESS,true)); + }else { + this.setBorder(new LineBorder(UNSELECTED_COLOR, UNSELECTED_THICKNESS, true)); + } + } +} diff --git a/src/main/java/views/Constants.java b/src/main/java/views/Constants.java index 26c9e78..9d5afab 100644 --- a/src/main/java/views/Constants.java +++ b/src/main/java/views/Constants.java @@ -1,5 +1,6 @@ package views; +import javax.swing.*; import java.awt.*; public class Constants { @@ -15,4 +16,12 @@ public static String CLOSED_SYMBOL="?"; public static int DECK_COUNT=11; public static Color SELECTED_COLOR=Color.CYAN; + public static Color UNSELECTED_COLOR=Color.BLACK; + public static Color OPEN_COLOR=Color.WHITE; + public static JButton cardPaint=new JButton(){ + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + } + }; } diff --git a/src/main/java/views/MainPanel.java b/src/main/java/views/MainPanel.java index 71d12d0..99ef2e4 100644 --- a/src/main/java/views/MainPanel.java +++ b/src/main/java/views/MainPanel.java @@ -4,6 +4,7 @@ import interfaces.IAttack; import javax.swing.*; +import javax.swing.border.LineBorder; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -22,7 +23,7 @@ private List selectableMyHandKeys; private List selectableOpponentHandKeys; JPanel myHandButtonsPanel; - JPanel opponentButtonsPanel; + JPanel opponentButtonsPanel; int guess; int attacker; int target; @@ -58,9 +59,8 @@ filter(x -> !x.getValue()).//非公開のカードを抽出 map(x -> x.getKey()).toList();//カードのリストからキーのリストへ変換 for (var i : myHands) { - var cardButton = new JButton(i.getKey().toString()); + var cardButton = new CardButton(i.getKey().toString()); if (!selectableMyHandKeys.contains(i.getKey())) cardButton.setEnabled(false); - cardButton.setPreferredSize(new Dimension(CARD_WIDTH, CARD_HEIGHT)); myHandButtons.add(cardButton); myHandButtonsPanel.add(cardButton, BorderLayout.WEST); } @@ -68,14 +68,15 @@ //相手のカードに関する処理 indexForOpponent=0; for (var i : opponentHands) { - var cardButton = new JButton(i.getValue() ? i.getKey().toString() :CLOSED_SYMBOL); - cardButton.setPreferredSize(new Dimension(CARD_WIDTH, CARD_HEIGHT)); + var cardButton = new CardButton(i.getValue() ? i.getKey().toString() :CLOSED_SYMBOL); cardButton.setEnabled(false); cardButton.addActionListener(new ActionListener() { final int index=indexForOpponent; public void actionPerformed(ActionEvent e) { var baseColor= cardButton.getBackground(); - cardButton.setBackground(SELECTED_COLOR); + // cardButton.setBackground(SELECTED_COLOR); + + cardButton.setBorder(new LineBorder(SELECTED_COLOR, 4, true)); //相手のカードを選択したときに確認用ダイアログを出す var option = JOptionPane.showConfirmDialog(null, "Select This Card?", "confirmation", 2); if (option == JOptionPane.YES_OPTION) { @@ -110,7 +111,7 @@ setStep(Step.SelectOpponentHands); } } - cardButton.setBackground(baseColor); + cardButton.setEnabledSelection(false); } }); opponentHandButtons.add(cardButton);