質問編集履歴

2

書式及び質問内容の分割

2015/11/29 09:37

投稿

nasulrj
nasulrj

スコア38

test CHANGED
@@ -1 +1 @@
1
- 続・Javaプログラミグ電卓いて
1
+ Java Swing】Aボタンには1.wavBボタンには2.wavと音を使分け鳴らしたい(続・電卓)
test CHANGED
@@ -2,45 +2,9 @@
2
2
 
3
3
  色々参考しながらなんとかSwingを使って電卓として計算機能は出来上がりました。
4
4
 
5
- 今回は、卓上電卓の機能にもあるMS(値の保存)、MR(値の書き出)とwavサウンドの使分け、背景設置ところ躓いたので知恵をおかください
5
+ 質問事項を盛り込みすぎてややこしいので1つずつ質問ます
6
6
 
7
- よろしくお願いします。
8
-
9
-
10
-
11
- 電卓
12
-
13
- 【ボタン】
14
-
15
- ・1~9,0、小数点、四則演算、=、AC(オールクリア)、MS、MR
7
+ まずはSEの音の使い分けについてお願いします┏○))ペコり
16
-
17
- 【ラベル】
18
-
19
- ・ラベル1:ボタンを押した該当の数字と小数点及び計算結果を表示(ex.1,2,3)
20
-
21
- ・ラベル2:計算式のみ表示(ex.1+2)
22
-
23
- 【背景】
24
-
25
- ボタンを透過処理する(完成)
26
-
27
- jpgファイル使用(質問部分)
28
-
29
-
30
-
31
- 【内部機能】
32
-
33
- ・四則演算(完成)
34
-
35
- ・MS,MR機能(質問部分)
36
-
37
- ・ボタンによるwavファイルの使い分け(理想としては数字ボタン、四則演算、=ボタンの使い分け)(質問部分)
38
-
39
-
40
-
41
- **【完成イメージ】**
42
-
43
- ![イメージ説明](fd689d00d6ceb306c41de1958c7f6ad0.png)
44
8
 
45
9
 
46
10
 
@@ -48,189 +12,7 @@
48
12
 
49
13
 
50
14
 
51
- ##質問
15
+ ##質問
52
-
53
- MS、MRの処理を以下に記載しているのですが、MSボタンを押し値は保存するものの四則演算ボタンを押してからMRボタンを押した時は消えて空白が表示されます。
54
-
55
- 値を退避させているにもかかわらず消えてしまいます。どこが悪いのでしょうか?
56
-
57
-
58
-
59
- ```dentaku.java(ボタン押下処理より記載)
60
-
61
- class dentaku{
62
-
63
- public void actionPerformed(ActionEvent ae) {
64
-
65
- // TODO 自動生成されたメソッド・スタブ
66
-
67
- JButton source = (JButton)ae.getSource();
68
-
69
-
70
-
71
- //数値ボタンが押された時の処理
72
-
73
- numberbutton(source);
74
-
75
- fugoubutton(source);
76
-
77
-
78
-
79
- }
80
-
81
-
82
-
83
- private void numberbutton(JButton source){
84
-
85
- // TODO 自動生成されたメソッド・スタブ
86
-
87
- //buttonが押された時の処理
88
-
89
-
90
-
91
-
92
-
93
-
94
-
95
- if(source ==this.btnms){
96
-
97
- ifbuff = true;
98
-
99
-
100
-
101
- sbuff = tempb; //値の退避
102
-
103
-
104
-
105
-
106
-
107
- }else if(source ==this.btnmr){
108
-
109
- tempb.append(new String(sbuff)); //値の取得のはずが実際は空白が出力
110
-
111
- tempp.append(new String(sbuff));
112
-
113
- }
114
-
115
-
116
-
117
- lbl_a.setText(new String(tempb));
118
-
119
- lbl_q.setText(new String(tempp));
120
-
121
-
122
-
123
-
124
-
125
- }
126
-
127
-
128
-
129
-
130
-
131
-
132
-
133
- private void fugoubutton(JButton source) {
134
-
135
- // TODO 自動生成されたメソッド・スタブ
136
-
137
- if((source==btnp) || (source == btnm) || (source ==btnk) || (source== btnd)||(source == btne)){
138
-
139
- if(ifbuff == true){
140
-
141
- buff=Keisan(saveb,sbuff);
142
-
143
-
144
-
145
- sbuff.setLength(0);
146
-
147
-
148
-
149
-
150
-
151
- }else if(ifbuff==false){
152
-
153
- buff =Keisan(saveb,tempb);
154
-
155
-
156
-
157
-
158
-
159
- }
160
-
161
- saveb.replace(0, buff.length(), buff);
162
-
163
- tempb.setLength(0);
164
-
165
-
166
-
167
-
168
-
169
-
170
-
171
- if (source == this.btne) {
172
-
173
- lbl_a.setText(new String(saveb)); // 結果表示
174
-
175
- saveb.setLength(0);
176
-
177
- saveb.append("0");
178
-
179
- tempb.setLength(0);
180
-
181
- tempp.setLength(0);
182
-
183
- sbuff.setLength(0);
184
-
185
- fugou = 0;
186
-
187
- }else if(source==btnp){
188
-
189
- fugou = 1;
190
-
191
- lbl_q.setText(new String(tempp.append("+")));
192
-
193
- }else if(source==btnm){
194
-
195
- fugou = 2;
196
-
197
- lbl_q.setText(new String(tempp.append("-")));
198
-
199
- }else if(source==btnk){
200
-
201
- fugou = 3;
202
-
203
- lbl_q.setText(new String(tempp.append("×")));
204
-
205
- }else if(source == btnd){
206
-
207
- fugou = 4;
208
-
209
- lbl_q.setText(new String(tempp.append("÷")));
210
-
211
- }
212
-
213
-
214
-
215
-
216
-
217
- }
218
-
219
-
220
-
221
-
222
-
223
- }
224
-
225
- }
226
-
227
- ```
228
-
229
-
230
-
231
-
232
-
233
- ##質問②
234
16
 
235
17
  ボタンを押した時にwavファイルを再生させているのですが、stop();を入れてしまうと、最初から音が再生されません。
236
18
 
@@ -238,9 +20,21 @@
238
20
 
239
21
  どうすれば使い分けることができるのでしょうか?
240
22
 
23
+ 2.wavのところに1.wavと同じ内容をコピーしてみましたがうまく再生されませんでした。
241
24
 
242
25
 
26
+
243
- ```
27
+ ```-dentaku.java
28
+
29
+ public class dentaku extends JFrame implements ActionListener {
30
+
31
+ Clip clip;
32
+
33
+ AudioInputStream ais,ais2;
34
+
35
+
36
+
37
+
244
38
 
245
39
  public void actionPerformed(ActionEvent ae) {
246
40
 
@@ -278,6 +72,8 @@
278
72
 
279
73
  ais = AudioSystem.getAudioInputStream("1.wav");
280
74
 
75
+ ais2 = AudioSystem.getAudioInputStream("2.wav");
76
+
281
77
  AudioFormat audioFormat = ais.getFormat();
282
78
 
283
79
  DataLine.Info info = new DataLine.Info(Clip.class, audioFormat);
@@ -288,7 +84,7 @@
288
84
 
289
85
 
290
86
 
291
- if (source == this.btn0){
87
+ if (source == this.btnA){
292
88
 
293
89
  tempb.append("0");
294
90
 
@@ -298,9 +94,11 @@
298
94
 
299
95
  clip.start();
300
96
 
301
- }else if(source == this.btnac){
97
+ }else if(source == this.btnB){
302
98
 
303
99
  //ここに2.wavを再生させたい
100
+
101
+
304
102
 
305
103
  tempb.setLength(0);
306
104
 
@@ -316,82 +114,22 @@
316
114
 
317
115
  fugou = 0;
318
116
 
319
- }
117
+ }
320
118
 
119
+ }catch (UnsupportedAudioFileException e)
321
120
 
121
+ { e.printStackTrace(); }
322
122
 
323
- private String Keisan(StringBuilder saveb2, StringBuilder tempb2) {
123
+ catch (IOException e)
324
124
 
325
- // TODO 自動生成されたメソッド・スタブ
125
+ { e.printStackTrace(); }
326
126
 
327
- float val1 = Float.parseFloat(saveb2.toString());
127
+ catch (LineUnavailableException e)
328
128
 
329
- float val2 = Float.parseFloat(tempb2.toString());
129
+ { e.printStackTrace(); }
330
130
 
331
- ans =0.0f;
332
-
333
-
334
-
335
- //四則演算の処理(完成)
336
-
337
-
338
-
339
- }
131
+ }
340
132
 
341
133
 
342
134
 
343
135
  ```
344
-
345
-
346
-
347
-
348
-
349
- ##質問③
350
-
351
- 電卓に背景をjpgファイルで使用したいのですが、以下のソースコードでやると重たくて起動時に一緒に設置してあるボタンとラベルがなかなか表示してくれなくて困っています。
352
-
353
- 背景のjpgファイルのザイズは40KBくらいです。
354
-
355
- どうしたら早く表示できますか?
356
-
357
-
358
-
359
- ```lang-dentaku.java
360
-
361
- class dentaku {
362
-
363
-
364
-
365
-
366
-
367
-
368
-
369
- //背景表示
370
-
371
- try {
372
-
373
- image = ImageIO.read(new File("img/haikei.jpg"));
374
-
375
-
376
-
377
- } catch (IOException e) {
378
-
379
- image = null;
380
-
381
- e.printStackTrace();
382
-
383
- }
384
-
385
-
386
-
387
- public void paint(Graphics g) {
388
-
389
- g.drawImage(image, 0, 0, this);
390
-
391
- paint(g);
392
-
393
- }
394
-
395
- }
396
-
397
- ```

1

2015/11/29 09:37

投稿

nasulrj
nasulrj

スコア38

test CHANGED
File without changes
test CHANGED
File without changes