質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

Q&A

解決済

1回答

3208閲覧

【Java Swing】Aボタンには1.wavBボタンには2.wavと音を使い分けて鳴らしたい(続・電卓)

nasulrj

総合スコア38

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

0グッド

1クリップ

投稿2015/11/26 14:50

編集2015/11/29 09:37

前回お見苦しい中回答してくださった方有難うございました。
色々参考しながらなんとかSwingを使って電卓として計算機能は出来上がりました。
質問事項を盛り込みすぎてややこしいので1つずつ質問します。
まずはSEの音の使い分けについてお願いします┏○))ペコり

##質問
ボタンを押した時にwavファイルを再生させているのですが、stop();を入れてしまうと、最初から音が再生されません。
最低でも数字ボタンと=ボタンの音は違う音を再生させたいのですが、全て同じ音の再生になってしまいます。
どうすれば使い分けることができるのでしょうか?
2.wavのところに1.wavと同じ内容をコピーしてみましたがうまく再生されませんでした。

public class dentaku extends JFrame implements ActionListener { Clip clip; AudioInputStream ais,ais2; public void actionPerformed(ActionEvent ae) { // TODO 自動生成されたメソッド・スタブ JButton source = (JButton)ae.getSource(); //数値ボタンが押された時の処理 numberbutton(source); //ボタンが押された時の処理 fugoubutton(source); //四則演算 } private void numberbutton(JButton source){ // TODO 自動生成されたメソッド・スタブ //buttonが押された時の処理 //何故かボタン全部が1.wavで再生される try { ais = AudioSystem.getAudioInputStream("1.wav"); ais2 = AudioSystem.getAudioInputStream("2.wav"); AudioFormat audioFormat = ais.getFormat(); DataLine.Info info = new DataLine.Info(Clip.class, audioFormat); clip = (Clip)AudioSystem.getLine(info); if (source == this.btnA){ tempb.append("0"); tempp.append("0"); clip.open(ais); clip.start(); }else if(source == this.btnB){ //ここに2.wavを再生させたい tempb.setLength(0); tempp.setLength(0); saveb.setLength(0); sbuff.setLength(0); saveb.append("0"); ans = 0.0f; fugou = 0; } }catch (UnsupportedAudioFileException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (LineUnavailableException e) { e.printStackTrace(); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

btnAの時の処理と、btnBの時の処理が、まったく釣り合っていませんね。

同様に、ais2を使っている部分が、aisと釣り合っていません。
2.wavを鳴らすには、aisでやっていることと同じことをais2でもやれば良いはずです。

いっそのこと、下記のように完全にif文の下に分けてしまえば良いのでは?

lang

1if (source == this.btnA) { 2 ais = AudioSystem.getAudioInputStream("1.wav"); 3 // TODO ここに処理を書く 4} else if (source == this.btnB) { 5 ais2 = AudioSystem.getAudioInputStream("2.wav"); 6 // TODO ここに処理を書く 7} 8``` 9 10 11 あと、インデントがバラバラなので、それを整理してから考えてみたほうが良さそうです。

投稿2015/11/29 10:03

argius

総合スコア9390

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nasulrj

2015/11/30 09:43

回答有り難うございました。 if文で使い分けが無事できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問