質問編集履歴

2

2016/06/07 23:32

投稿

sobue
sobue

スコア329

test CHANGED
File without changes
test CHANGED
@@ -90,7 +90,7 @@
90
90
 
91
91
  ```
92
92
 
93
- ピクロスの要である数字をラベルにて出力したいのですが、うまくいきません。
93
+ ピクロスの要である数字をラベルにて出力したいのですが、boardに描いた絵に隠れてしまっているのか、うまくいきません。
94
94
 
95
95
  btnpanelのところであれば表示されたのですが・・・。
96
96
 

1

質問内容の変更

2016/06/07 23:32

投稿

sobue
sobue

スコア329

test CHANGED
@@ -1 +1 @@
1
- 複数ラベル識別
1
+ ついたPanelの上にLabelの配置
test CHANGED
@@ -1,72 +1,10 @@
1
- ![![イメージ説明](e38a9c7d36d91e409168d6463c3ff01d.png)](1bbaf13bc2f09662ed1b590d473288a6.png)
1
+ ![イメージ説明](2b28e1c3132c4d4ea221eaacfe3b6e73.png)
2
-
3
-
4
2
 
5
3
  ```java
6
-
7
- package newPicross;
8
-
9
-
10
-
11
- import static newPicross.CommonConst.*;
12
-
13
- import java.awt.BorderLayout;
14
-
15
- import java.awt.Color;
16
-
17
- import java.awt.Dimension;
18
-
19
- import java.awt.Graphics;
20
-
21
- import java.awt.Panel;
22
-
23
- import java.awt.event.ActionEvent;
24
-
25
- import java.awt.event.ActionListener;
26
-
27
- import java.awt.event.MouseEvent;
28
-
29
- import java.awt.event.MouseListener;
30
-
31
- import java.io.BufferedReader;
32
-
33
- import java.io.FileReader;
34
-
35
- import java.util.StringTokenizer;
36
-
37
-
38
-
39
- import javax.swing.JButton;
40
-
41
- import javax.swing.JFileChooser;
42
-
43
- import javax.swing.JFrame;
44
-
45
- import javax.swing.JPanel;
46
-
47
-
48
-
49
- import javafx.geometry.VerticalDirection;
50
-
51
- import javafx.stage.FileChooser;
52
-
53
-
54
-
55
- /*
56
-
57
- *
58
-
59
- */
60
4
 
61
5
  public class Picross extends JFrame implements ActionListener {
62
6
 
63
7
 
64
-
65
- JPanel btnpanel = new JPanel();
66
-
67
- JButton btn = new JButton("問題選択");
68
-
69
- JButton answerbtn = new JButton("答え合わせ");
70
8
 
71
9
  int[][] questionarray = new int[MASS][MASS];
72
10
 
@@ -74,7 +12,23 @@
74
12
 
75
13
  public Picross() {
76
14
 
15
+ Board board = new Board();
77
16
 
17
+
18
+
19
+ JPanel btnpanel = new JPanel();
20
+
21
+ JButton btn = new JButton("問題選択");
22
+
23
+ JButton answerbtn = new JButton("答え合わせ");
24
+
25
+
26
+
27
+ JPanel labelpanel = new JPanel();
28
+
29
+ JLabel label = new JLabel("テスト");
30
+
31
+
78
32
 
79
33
  // フォームの設定
80
34
 
@@ -89,6 +43,14 @@
89
43
  btn.addActionListener(this);
90
44
 
91
45
  btnpanel.add(btn);
46
+
47
+
48
+
49
+ // ピクロスの数字を表示するラベルの設定
50
+
51
+ board.add(labelpanel);
52
+
53
+ labelpanel.add(label);
92
54
 
93
55
 
94
56
 
@@ -106,11 +68,13 @@
106
68
 
107
69
 
108
70
 
109
- Board board = new Board();
71
+
110
72
 
111
73
  // ピクロスのボードの位置を設定
112
74
 
113
75
  add(board, BorderLayout.CENTER);
76
+
77
+
114
78
 
115
79
 
116
80
 
@@ -122,440 +86,12 @@
122
86
 
123
87
 
124
88
 
125
- public static void main(String[] args) {
126
-
127
- Picross board = new Picross();
128
-
129
- board.setVisible(true);
130
-
131
- }
132
-
133
-
134
-
135
- @Override
136
-
137
- public void actionPerformed(ActionEvent e) {
138
-
139
-
140
-
141
- if (e.getActionCommand().equals("問題選択")) {
142
-
143
- // 問題選択ボタン
144
-
145
-
146
-
147
- // 問題を選択する
148
-
149
- selectQuestion();
150
-
151
- } else if (e.getActionCommand().equals("答え合わせ")) {
152
-
153
- // 答え合わせボタン
154
-
155
-
156
-
157
- }
158
-
159
- }
160
-
161
-
162
-
163
- private void selectQuestion() {
164
-
165
-
166
-
167
- int x = 1;
168
-
169
- int y = 1;
170
-
171
-
172
-
173
- JFileChooser fileChooser = new JFileChooser();
174
-
175
- // OpenDialogを表示させる
176
-
177
- int selected = fileChooser.showOpenDialog(this);
178
-
179
-
180
-
181
- // 開くを選択した場合
182
-
183
- if (selected == JFileChooser.APPROVE_OPTION) {
184
-
185
- try {
186
-
187
- FileReader fileReader = new FileReader(fileChooser.getSelectedFile());
188
-
189
- BufferedReader bufferedReader = new BufferedReader(fileReader);
190
-
191
-
192
-
193
- String line;
194
-
195
- StringTokenizer token;
196
-
197
-
198
-
199
- while ((line = bufferedReader.readLine()) != null) {
200
-
201
- token = new StringTokenizer(line, ",");
202
-
203
- while (token.hasMoreTokens()) {
204
-
205
-
206
-
207
- if (token.nextToken().equals("1")) {
208
-
209
- questionarray[x][y] = 1;
210
-
211
- } else {
212
-
213
- questionarray[x][y] = 0;
214
-
215
- }
216
-
217
-
218
-
219
- if (x == MASS - 1) {
220
-
221
- x = 1;
222
-
223
- y++;
224
-
225
- } else {
226
-
227
- x++;
228
-
229
- }
230
-
231
- }
232
-
233
- }
234
-
235
- bufferedReader.close();
236
-
237
- // 選択したファイルを読み込む
238
-
239
- } catch (Exception e2) {
240
-
241
- // TODO: handle exception
242
-
243
- }
244
-
245
- }
246
-
247
-
248
-
249
- // 縦の読み込み
250
-
251
- vertical();
252
-
253
- // 横の読み込み
254
-
255
- side();
256
-
257
- }
258
-
259
-
260
-
261
- private void side() {
262
-
263
-
264
-
265
- int shaveCount = 0;
266
-
267
- String shaveString = "";
268
-
269
-
270
-
271
- for (int x = 1; x < MASS; x++) {
272
-
273
- for (int y = 1; y < MASS; y++) {
274
-
275
-
276
-
277
- if (questionarray[x][y] == 1) {
278
-
279
- shaveCount++;
280
-
281
- } else {
282
-
283
- if (shaveCount > 0) {
284
-
285
-
286
-
287
- shaveString = shaveString.trim() + shaveCount + " ";
288
-
289
- shaveCount = 0;
290
-
291
- } else {
292
-
293
- shaveString = shaveString.trim() + " ";
294
-
295
- shaveCount = 0;
296
-
297
- }
298
-
299
-
300
-
301
- }
302
-
303
- if (y == MASS - 1) {
304
-
305
- if (shaveString.trim().length() == 0) {
306
-
307
- System.out.println(0);
308
-
309
- } else {
310
-
311
- System.out.println(shaveString);
312
-
313
- }
314
-
315
- shaveString = "";
316
-
317
- }
318
-
319
- }
320
-
321
- }
322
-
323
-
324
-
325
- }
326
-
327
-
328
-
329
- private void vertical() {
330
-
331
-
332
-
333
- }
334
-
335
-
336
-
337
- /**
338
-
339
- *
340
-
341
- * ピクロスの盤面
342
-
343
- *
344
-
345
- */
346
-
347
- static class Board extends Panel implements MouseListener {
348
-
349
-
350
-
351
- int[][] boardarray = new int[MASS][MASS];
352
-
353
-
354
-
355
- public Board() {
356
-
357
- setPreferredSize(new Dimension(WI, HI));
358
-
359
- addMouseListener(this);
360
-
361
-
362
-
363
- }
364
-
365
-
366
-
367
- public void paint(Graphics graphi) {
368
-
369
-
370
-
371
- graphi.setColor(Color.BLACK);
372
-
373
- // ボードの下地を描く
374
-
375
- graphi.fillRect(0, 0, HI, WI);
376
-
377
-
378
-
379
- graphi.setColor(Color.WHITE);
380
-
381
- // ピクロスのマスの線を引く
382
-
383
- for (int i = 1; i <= MASS; i++) {
384
-
385
- // 横線
386
-
387
- graphi.drawLine(0, i * SIZE + MARGIN, WI, i * SIZE + MARGIN);
388
-
389
- // 縦線
390
-
391
- graphi.drawLine(i * SIZE + MARGIN, 0, i * SIZE + MARGIN, HI);
392
-
393
- }
394
-
395
-
396
-
397
- // 削った場所と戻した場所と削ってはいけない場所の色付け
398
-
399
- for (int x = 1; x < MASS; x++) {
400
-
401
- for (int y = 1; y < MASS; y++) {
402
-
403
-
404
-
405
- if (boardarray[x][y] == SHAVED) {
406
-
407
- // 削った場所
408
-
409
- graphi.setColor(Color.WHITE);
410
-
411
- graphi.fillRect(x * SIZE + MARGIN, y * SIZE + MARGIN, SIZE, SIZE);
412
-
413
-
414
-
415
- } else if (boardarray[x][y] == BANSHAVED) {
416
-
417
- // 削ってはいけない場所
418
-
419
- graphi.setColor(Color.RED);
420
-
421
- graphi.drawLine(x * SIZE + MARGIN, y * SIZE + MARGIN, (x + 1) * SIZE + MARGIN,
422
-
423
- (y + 1) * SIZE + MARGIN);
424
-
425
- graphi.drawLine(x * SIZE + MARGIN, (y + 1) * SIZE + MARGIN, (x + 1) * SIZE + MARGIN,
426
-
427
- y * SIZE + MARGIN);
428
-
429
-
430
-
431
- } else {
432
-
433
- // 元に戻した場所
434
-
435
- graphi.setColor(Color.BLACK);
436
-
437
- }
438
-
439
-
440
-
441
- }
442
-
443
- }
444
-
445
- }
446
-
447
-
448
-
449
- @Override
450
-
451
- public void mouseClicked(MouseEvent e) {
452
-
453
- // TODO 自動生成されたメソッド・スタブ
454
-
455
-
456
-
457
- }
458
-
459
-
460
-
461
- @Override
462
-
463
- public void mousePressed(MouseEvent e) {
464
-
465
-
466
-
467
- int x = (e.getX() - MARGIN) / SIZE;
468
-
469
- int y = (e.getY() - MARGIN) / SIZE;
470
-
471
-
472
-
473
- if ((x > 0 && y > 0) && (x < MASS && y < MASS)) {
474
-
475
-
476
-
477
- if (e.getClickCount() == 1) {
478
-
479
- // クリック時
480
-
481
- if (boardarray[x][y] == 0) {
482
-
483
- boardarray[x][y] = SHAVED;
484
-
485
- } else {
486
-
487
- boardarray[x][y] = INIT;
488
-
489
- }
490
-
491
-
492
-
493
- } else if (e.getClickCount() == 2) {
494
-
495
- // ダブルクリック時
496
-
497
- boardarray[x][y] = BANSHAVED;
498
-
499
- }
500
-
501
- // 再描画する
502
-
503
- repaint();
504
-
505
- }
506
-
507
-
508
-
509
- }
510
-
511
-
512
-
513
- @Override
514
-
515
- public void mouseReleased(MouseEvent e) {
516
-
517
- // TODO 自動生成されたメソッド・スタブ
518
-
519
-
520
-
521
- }
522
-
523
-
524
-
525
- @Override
526
-
527
- public void mouseEntered(MouseEvent e) {
528
-
529
- // TODO 自動生成されたメソッド・スタブ
530
-
531
-
532
-
533
- }
534
-
535
-
536
-
537
- @Override
538
-
539
- public void mouseExited(MouseEvent e) {
540
-
541
- // TODO 自動生成されたメソッド・スタブ
542
-
543
-
544
-
545
- }
546
-
547
-
548
-
549
- }
550
-
551
-
552
-
553
- }
554
-
555
89
 
556
90
 
557
91
  ```
558
92
 
559
- ピクロスを作ろうとしていますが、別アプリケーション問題作りCSV出力しその問題を選択して遊ぶものを考えていま
93
+ ピクロスのある数字ラベルにて出力したいのですがうまくせん
560
94
 
561
- 削るマスを表示するラベルIDなども一緒になってしまいうまくいきませんどのようにしたらいいのでしょう?
95
+ btnpanelのところであれば表示されたのですが・・・
96
+
97
+ お手数ですが、宜しくお願いします。