我开发了一个简单的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