teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

質問に対する純粋な返答がなかったので

2017/07/18 16:58

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,5 +1,26 @@
1
+ バグだけ取るならこうすれば良いです。
2
+ "プログラムの気持ちになって"処理を追えば、なぜ思い通りにならないかわかると思います。
3
+ ```Java
4
+ public void actionPerformed(ActionEvent e) {
5
+ if(flag==1) {
6
+ ImageIcon icon = new ImageIcon("./maru32.png");
7
+ jb.setIcon(icon);
8
+ jb.setText("まる");
9
+ flag=2;
10
+ }
11
+ else if(flag==2) {
12
+ ImageIcon icon = new ImageIcon("./peke32.png");
13
+ jb.setIcon(icon);
14
+ jb.setText("ぺけ");
15
+ flag=1;
16
+ }
17
+ }
18
+ ```
19
+
20
+ 本題
21
+ ---
1
22
  コード全体の設計の話は[前回](https://teratail.com/questions/84164)したので、ロジック部分だけ。
2
- 私ならこう書きます。
23
+ 私ならこう書きます。(拡張性のあまりないコードですが)
3
24
  ```Java
4
25
  private MainText mainText = new MainText();
5
26
  private class MainText {
@@ -28,7 +49,7 @@
28
49
  アイコン操作を追加する場合は、またアイコン用の管理クラスを作ればよいです。
29
50
 
30
51
  MainTextクラスは即興で作ったので、まだまだ改善の余地があると思います。
31
- 文字列を配列で管理するとかね。→追記しました。
52
+ 文字列を配列で管理するとかね。**→追記しました。**
32
53
 
33
54
  ---
34
55
  前回も書きましたが、これらは大原則です。

3

リンクを張ったよ

2017/07/18 16:58

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,4 +1,4 @@
1
- コード全体の設計の話は前回したので、ロジック部分だけ。
1
+ コード全体の設計の話は[前回](https://teratail.com/questions/84164)したので、ロジック部分だけ。
2
2
  私ならこう書きます。
3
3
  ```Java
4
4
  private MainText mainText = new MainText();

2

追記追記

2017/07/18 15:30

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -46,6 +46,7 @@
46
46
  ---
47
47
  こっちの方がクールかな。
48
48
  ```Java
49
+ private MainText mainText = new MainText();
49
50
  private class MainText {
50
51
  private String[] centerText = {"まる", "ばつ"};
51
52
  private int nowText = 0;
@@ -54,6 +55,12 @@
54
55
  return centerText[nowText++ % centerText.length];
55
56
  }
56
57
  }
58
+
59
+ public class CenterButtonListener implements ActionListener {
60
+ public void actionPerformed(ActionEvent e) {
61
+ centerButton.setText(mainText.getNextText());
62
+ }
63
+ }
57
64
  ```
58
65
 
59
66
  クラスが小規模なので、こういうときは数値で管理するのはありですかね。

1

追記

2017/07/18 15:25

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -28,7 +28,7 @@
28
28
  アイコン操作を追加する場合は、またアイコン用の管理クラスを作ればよいです。
29
29
 
30
30
  MainTextクラスは即興で作ったので、まだまだ改善の余地があると思います。
31
- 文字列を配列で管理するとかね。
31
+ 文字列を配列で管理するとかね。→追記しました。
32
32
 
33
33
  ---
34
34
  前回も書きましたが、これらは大原則です。
@@ -40,4 +40,20 @@
40
40
  - **フラグ操作は最終手段**
41
41
 
42
42
  ご提示のコードだと、フラグはクラス内のどこからでも操作出来てしまうので、
43
- 予想通りの挙動を見せないときに、プログラムを端から端まで舐める作業が生じてしまいます。
43
+ 予想通りの挙動を見せないときに、プログラムを端から端まで舐める作業が生じてしまいます。
44
+
45
+ 追記
46
+ ---
47
+ こっちの方がクールかな。
48
+ ```Java
49
+ private class MainText {
50
+ private String[] centerText = {"まる", "ばつ"};
51
+ private int nowText = 0;
52
+
53
+ private String getNextText() {
54
+ return centerText[nowText++ % centerText.length];
55
+ }
56
+ }
57
+ ```
58
+
59
+ クラスが小規模なので、こういうときは数値で管理するのはありですかね。