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

質問編集履歴

2

2016/06/07 23:32

投稿

sobue
sobue

スコア331

title CHANGED
File without changes
body CHANGED
@@ -44,6 +44,6 @@
44
44
 
45
45
 
46
46
  ```
47
- ピクロスの要である数字をラベルにて出力したいのですが、うまくいきません。
47
+ ピクロスの要である数字をラベルにて出力したいのですが、boardに描いた絵に隠れてしまっているのか、うまくいきません。
48
48
  btnpanelのところであれば表示されたのですが・・・。
49
49
  お手数ですが、宜しくお願いします。

1

質問内容の変更

2016/06/07 23:32

投稿

sobue
sobue

スコア331

title CHANGED
@@ -1,1 +1,1 @@
1
- 複数ラベル識別
1
+ ついたPanelの上にLabelの配置
body CHANGED
@@ -1,42 +1,19 @@
1
- ![![イメージ説明](e38a9c7d36d91e409168d6463c3ff01d.png)](1bbaf13bc2f09662ed1b590d473288a6.png)
1
+ ![イメージ説明](2b28e1c3132c4d4ea221eaacfe3b6e73.png)
2
-
3
2
  ```java
4
- package newPicross;
5
-
6
- import static newPicross.CommonConst.*;
7
- import java.awt.BorderLayout;
8
- import java.awt.Color;
9
- import java.awt.Dimension;
10
- import java.awt.Graphics;
11
- import java.awt.Panel;
12
- import java.awt.event.ActionEvent;
13
- import java.awt.event.ActionListener;
14
- import java.awt.event.MouseEvent;
15
- import java.awt.event.MouseListener;
16
- import java.io.BufferedReader;
17
- import java.io.FileReader;
18
- import java.util.StringTokenizer;
19
-
20
- import javax.swing.JButton;
21
- import javax.swing.JFileChooser;
22
- import javax.swing.JFrame;
23
- import javax.swing.JPanel;
24
-
25
- import javafx.geometry.VerticalDirection;
26
- import javafx.stage.FileChooser;
27
-
28
- /*
29
- *
30
- */
31
3
  public class Picross extends JFrame implements ActionListener {
32
4
 
33
- JPanel btnpanel = new JPanel();
34
- JButton btn = new JButton("問題選択");
35
- JButton answerbtn = new JButton("答え合わせ");
36
5
  int[][] questionarray = new int[MASS][MASS];
37
6
 
38
7
  public Picross() {
39
-
8
+ Board board = new Board();
9
+
10
+ JPanel btnpanel = new JPanel();
11
+ JButton btn = new JButton("問題選択");
12
+ JButton answerbtn = new JButton("答え合わせ");
13
+
14
+ JPanel labelpanel = new JPanel();
15
+ JLabel label = new JLabel("テスト");
16
+
40
17
  // フォームの設定
41
18
  setTitle("ピクロス");
42
19
  setDefaultCloseOperation(EXIT_ON_CLOSE);
@@ -44,6 +21,10 @@
44
21
  // 問題選択ボタンの設定
45
22
  btn.addActionListener(this);
46
23
  btnpanel.add(btn);
24
+
25
+ // ピクロスの数字を表示するラベルの設定
26
+ board.add(labelpanel);
27
+ labelpanel.add(label);
47
28
 
48
29
  // 答え合わせボタンの設定
49
30
  answerbtn.addActionListener(this);
@@ -52,230 +33,17 @@
52
33
  // ボタンの位置の設定
53
34
  add(btnpanel, BorderLayout.SOUTH);
54
35
 
55
- Board board = new Board();
36
+
56
37
  // ピクロスのボードの位置を設定
57
38
  add(board, BorderLayout.CENTER);
39
+
58
40
 
59
41
  // 全てをまとめる
60
42
  pack();
61
43
  }
62
44
 
63
- public static void main(String[] args) {
64
- Picross board = new Picross();
65
- board.setVisible(true);
66
- }
67
45
 
68
- @Override
69
- public void actionPerformed(ActionEvent e) {
70
-
71
- if (e.getActionCommand().equals("問題選択")) {
72
- // 問題選択ボタン
73
-
74
- // 問題を選択する
75
- selectQuestion();
76
- } else if (e.getActionCommand().equals("答え合わせ")) {
77
- // 答え合わせボタン
78
-
79
- }
80
- }
81
-
82
- private void selectQuestion() {
83
-
84
- int x = 1;
85
- int y = 1;
86
-
87
- JFileChooser fileChooser = new JFileChooser();
88
- // OpenDialogを表示させる
89
- int selected = fileChooser.showOpenDialog(this);
90
-
91
- // 開くを選択した場合
92
- if (selected == JFileChooser.APPROVE_OPTION) {
93
- try {
94
- FileReader fileReader = new FileReader(fileChooser.getSelectedFile());
95
- BufferedReader bufferedReader = new BufferedReader(fileReader);
96
-
97
- String line;
98
- StringTokenizer token;
99
-
100
- while ((line = bufferedReader.readLine()) != null) {
101
- token = new StringTokenizer(line, ",");
102
- while (token.hasMoreTokens()) {
103
-
104
- if (token.nextToken().equals("1")) {
105
- questionarray[x][y] = 1;
106
- } else {
107
- questionarray[x][y] = 0;
108
- }
109
-
110
- if (x == MASS - 1) {
111
- x = 1;
112
- y++;
113
- } else {
114
- x++;
115
- }
116
- }
117
- }
118
- bufferedReader.close();
119
- // 選択したファイルを読み込む
120
- } catch (Exception e2) {
121
- // TODO: handle exception
122
- }
123
- }
124
-
125
- // 縦の読み込み
126
- vertical();
127
- // 横の読み込み
128
- side();
129
- }
130
-
131
- private void side() {
132
-
133
- int shaveCount = 0;
134
- String shaveString = "";
135
-
136
- for (int x = 1; x < MASS; x++) {
137
- for (int y = 1; y < MASS; y++) {
138
-
139
- if (questionarray[x][y] == 1) {
140
- shaveCount++;
141
- } else {
142
- if (shaveCount > 0) {
143
-
144
- shaveString = shaveString.trim() + shaveCount + " ";
145
- shaveCount = 0;
146
- } else {
147
- shaveString = shaveString.trim() + " ";
148
- shaveCount = 0;
149
- }
150
-
151
- }
152
- if (y == MASS - 1) {
153
- if (shaveString.trim().length() == 0) {
154
- System.out.println(0);
155
- } else {
156
- System.out.println(shaveString);
157
- }
158
- shaveString = "";
159
- }
160
- }
161
- }
162
-
163
- }
164
-
165
- private void vertical() {
166
-
167
- }
168
-
169
- /**
170
- *
171
- * ピクロスの盤面
172
- *
173
- */
174
- static class Board extends Panel implements MouseListener {
175
-
176
- int[][] boardarray = new int[MASS][MASS];
177
-
178
- public Board() {
179
- setPreferredSize(new Dimension(WI, HI));
180
- addMouseListener(this);
181
-
182
- }
183
-
184
- public void paint(Graphics graphi) {
185
-
186
- graphi.setColor(Color.BLACK);
187
- // ボードの下地を描く
188
- graphi.fillRect(0, 0, HI, WI);
189
-
190
- graphi.setColor(Color.WHITE);
191
- // ピクロスのマスの線を引く
192
- for (int i = 1; i <= MASS; i++) {
193
- // 横線
194
- graphi.drawLine(0, i * SIZE + MARGIN, WI, i * SIZE + MARGIN);
195
- // 縦線
196
- graphi.drawLine(i * SIZE + MARGIN, 0, i * SIZE + MARGIN, HI);
197
- }
198
-
199
- // 削った場所と戻した場所と削ってはいけない場所の色付け
200
- for (int x = 1; x < MASS; x++) {
201
- for (int y = 1; y < MASS; y++) {
202
-
203
- if (boardarray[x][y] == SHAVED) {
204
- // 削った場所
205
- graphi.setColor(Color.WHITE);
206
- graphi.fillRect(x * SIZE + MARGIN, y * SIZE + MARGIN, SIZE, SIZE);
207
-
208
- } else if (boardarray[x][y] == BANSHAVED) {
209
- // 削ってはいけない場所
210
- graphi.setColor(Color.RED);
211
- graphi.drawLine(x * SIZE + MARGIN, y * SIZE + MARGIN, (x + 1) * SIZE + MARGIN,
212
- (y + 1) * SIZE + MARGIN);
213
- graphi.drawLine(x * SIZE + MARGIN, (y + 1) * SIZE + MARGIN, (x + 1) * SIZE + MARGIN,
214
- y * SIZE + MARGIN);
215
-
216
- } else {
217
- // 元に戻した場所
218
- graphi.setColor(Color.BLACK);
219
- }
220
-
221
- }
222
- }
223
- }
224
-
225
- @Override
226
- public void mouseClicked(MouseEvent e) {
227
- // TODO 自動生成されたメソッド・スタブ
228
-
229
- }
230
-
231
- @Override
232
- public void mousePressed(MouseEvent e) {
233
-
234
- int x = (e.getX() - MARGIN) / SIZE;
235
- int y = (e.getY() - MARGIN) / SIZE;
236
-
237
- if ((x > 0 && y > 0) && (x < MASS && y < MASS)) {
238
-
239
- if (e.getClickCount() == 1) {
240
- // クリック時
241
- if (boardarray[x][y] == 0) {
242
- boardarray[x][y] = SHAVED;
243
- } else {
244
- boardarray[x][y] = INIT;
245
- }
246
-
247
- } else if (e.getClickCount() == 2) {
248
- // ダブルクリック時
249
- boardarray[x][y] = BANSHAVED;
250
- }
251
- // 再描画する
252
- repaint();
253
- }
254
-
255
- }
256
-
257
- @Override
258
- public void mouseReleased(MouseEvent e) {
259
- // TODO 自動生成されたメソッド・スタブ
260
-
261
- }
262
-
263
- @Override
264
- public void mouseEntered(MouseEvent e) {
265
- // TODO 自動生成されたメソッド・スタブ
266
-
267
- }
268
-
269
- @Override
270
- public void mouseExited(MouseEvent e) {
271
- // TODO 自動生成されたメソッド・スタブ
272
-
273
- }
274
-
275
- }
276
-
277
- }
278
-
279
46
  ```
280
- ピクロスを作ろうとしていますが、別のアプリケーションで問題を作りCSV出力して、その問題を選択して遊ぶものを考えています。
281
- 削るマを表示するラベルがIDなども一緒なってしいうまくいきません。どのようにしたらいいのでしょう?
47
+ ピクロの要であ数字をラベルにて出力のですが、うまくいきません。
48
+ btnpanelのところであれば表示されたのですが・・・。
49
+ お手数ですが、宜しくお願いします。