1

java.awt.graphics ライブラリの長方形を使用して Java でピアノをコーディングしています。マウスが JFrame の特定の領域をクリックすると、個々のキーの音を再生するために mouselistener を使用しています。

クリック時にパネルにシェイプを追加し、再ペイントしてから、ユーザーがマウスを離したときにキーボードを上に再ペイントするにはどうすればよいですか?

4

2 に答える 2

3

GridLayoutを使用するJPanelにJLabelを追加することを検討してください。各JLabelにMouseListenerを与え、mousePress / mouseReleaseでImageIconsを交換するか、プレスアンドリリースでJLabelの背景を変更します。後者のルートを使用する場合は、背景色が表示されるように、JLabelsの不透明なプロパティがtrueに設定されていることを確認する必要があります。

次に、黒のキーの場合、上記のJPanelをJLayeredPaneに追加し、その上に、同じように機能する黒のキーを保持する別のJPanelを追加できます。

また、Swingイベントスレッドを拘束してプログラムを完全にフリーズしないように、SwingWorkerで取得できるようなバックグラウンドスレッドでノートを「再生」するように注意する必要があります。

于 2012-02-08T01:52:53.237 に答える
2

解決策を検討してください:ソース

それはあなたが求めているものではないかもしれませんが、あなたの問題にどのようにアプローチするかについてのアイデアを与えるかもしれません. JLayeredPane nullレイアウトを設定せずに使用する方法を理解するのに長い時間がかかりましたが、最終的にはこれが私が思いついた最高のものでした. また、サウンド ファイルにはいくつかの命名規則があると仮定します。:p

于 2012-02-08T01:28:40.190 に答える