Как я могу изменить цвета компонентов, когда мышь нажата в JFrame в Java? - PullRequest
1 голос
/ 08 февраля 2012

Я пишу на пианино в java, используя прямоугольники из библиотеки java.awt.graphics.Я использую слушатель мыши для воспроизведения звука каждой отдельной клавиши, когда мышь щелкает определенную область на JFrame.

Как добавить форму на панель после нажатия, перекрасить, а затем перекрасить клавиатуру обратновершина, когда пользователь отпускает мышь?

Ответы [ 2 ]

3 голосов
/ 08 февраля 2012

Рассмотрите возможность добавления JLabels к JPanel, которая использует GridLayout.Дайте каждому JLabel MouseListener и поменяйте местами ImageIcons на mousePress / mouseRelease или измените фон JLabel с помощью нажатия и отпускания.Если вы выберете последний путь, вам нужно убедиться, что для непрозрачного свойства JLabels установлено значение true, чтобы фоновые цвета отображались.

Затем для черных клавиш вы можете добавить вышеупомянутую JPanel к JLayeredPane и поверх этого добавить еще одну JPanel, которая содержит черные клавиши, которые функционируют таким же образом.

Также,вам нужно позаботиться о том, чтобы «воспроизвести» любые ноты в фоновом потоке, например, которые можно получить с помощью SwingWorker, чтобы не связывать поток событий Swing и полностью заморозить вашу программу.

2 голосов
/ 08 февраля 2012

Рассмотрим решение: источник

Возможно, это не совсем то, что вам нужно, но это может дать вам представление о том, как подойти к вашей проблеме. Мне потребовалось много времени, чтобы понять, как использовать JLayeredPane без установки нулевого макета, но в итоге это было лучшее, что я смог придумать. Кроме того, предполагаются некоторые соглашения об именах для ваших звуковых файлов. : Р

...