我開發了一個簡單的MIDI應用程序,它允許我播放MIDI音符,以便用戶在MIDI聲音播放時能夠與UI交互。像這樣必要的匿名子類中的邏輯:在單獨的線程中運行邏輯仍然鎖定用戶界面 - Java
public static void Play()
{
new Thread(new Runnable()
{
public void run()
{
if (!_sequencer.isRunning())
{
try
{
_sequencer.setSequence(_sequence);
_sequencer.start();
}
catch (Exception e)
{
Logger.Add(e.getMessage());
}
}
}
}).start();
}
雖然音樂開始播放UI仍然失敗,當我點擊,例如一個ComboBox迴應,我也有類似的工作在C#細的東西。
是否有某種警告線程在Java中,可以解釋我看到的行爲?
(我使用它是否有助於Java的API - javax.sound.midi)
感謝您的時間。
編輯:
點擊周圍的UI多一點,並發現了一些有趣的;一切似乎都工作正常,除了最左上角的兩個ComboBoxes,我試過刪除它們並替換它們,但沒有任何區別。點擊時框會變成藍色(正常情況下),但下拉框不會出現在其下方,並且當焦點位於另一個UI組件上時,顏色不會返回到默認值。它可能是NetBeans引入的錯誤嗎?
例子:
編輯2:
多的反覆試驗後嗯,我終於找到了問題的原因,穿線的偉大工程。問題在於,NetBeans以某種方式重新整理了我的UI組件,這些組件會導致Window填充屏幕,手動調整大小並測試ComboBoxes,結果表明它們實際上運行良好。
感謝每一個人的反饋!
我會懷疑你的COmboBox初始化代碼,比MIDI代碼更多。爲了向你自己證明,不要啓動MIDI線程,看看組合框是否仍然混亂。 – MeBigFatGuy 2011-04-16 23:10:57
你在linux上嗎?這是一個瘋狂的猜測:嘗試在啓動應用程序的命令行中添加-Dsun.awt.disablegrab = true。 – MeBigFatGuy 2011-04-16 23:13:08
我已經用解決方案更新了我的問題:) – 2011-04-17 16:42:09