2012-02-08 7 views
1

私はjava.awt.graphicsライブラリの四角形を使用して、Javaでピアノをコーディングしています。私は、マウスがJFrame上の特定の領域をクリックすると、個々のキーのサウンドを再生するためにマウスリストを使用しています。JavaのJFrameでマウスを押したときのコンポーネントの色を変更するにはどうすればよいですか?

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

+0

私は実際にJFrameと言っていました。謝罪します。 – Greg

+0

必要に応じていくつかのコードを貼り付けてください:http://pastie.org – rtheunissen

+0

@HovercraftFullOfEels AWTかSwingかはこの質問にはほとんど意味がありません。 – rtheunissen

答えて

2

は解決策を考えてみましょう:source

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

+0

この問題は、コードを使ってpaintComponentのGraphics gを利用してシェイプを作成したことです。 'g.fillRect()'特定のシェイプを参照するにはどうしますか? – Greg

+0

私は参照してください。何を教えて、私にコードを貼り付けてみてください。 http://pastie.org :) – rtheunissen

+0

http://pastie.org/3338408 私は黒い鍵を取り出して読みやすくしました。エレガンスが欠けていることを言い訳して、私は何かを私のリーグから完全に取り除いています! – Greg

3

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

黒いキーについては、上記のJPanelをJLayeredPaneに追加し、同様に機能する黒いキーを保持する別のJPanelを追加することができます。

また、SwingWorkerで取得してSwingイベントスレッドを縛りつけずにプログラムを完全にフリーズするなど、バックグラウンドスレッドのメモを「再生」したい場合があります。

関連する問題