>>793
鳴ってる間(while でループしてる間)に押してるからじゃないの?
ユーザによってボタンが押されるのを待つスレッドは常に一つで、
それが呼んだ actionPerformed が終わってくれないと、
次のボタン押下の監視を開始することはできないよ。
ゆえに、押せないか、押せたように見えても反応は無い。

押されるたびに別スレッドを起動して、
その中で鳴らす→待つ→スレッド終了の処理をやるようにすれば、押した数だけなる。
ただし、前のが鳴り終わってなければ、複数が重なって鳴る。
actionPerformed の冒頭と終端でボタンの setEnabled(false), setEnabled(true) をすれば、
鳴ってる間は押せない。押せたようにも見えない。
重ねて鳴らすのではなく、鳴ってる間に押された数を憶えておいて連続でならしたいのだったら、
押されたというイベントをキューにためる処理が必要。

それは・・・そういう API はあったかな? これまで必要がなかったので知らないや。
無ければ自作。