Java 鼠标事件处理以创建新的填充JFrames
我看到一些我真的不理解的行为。在第一段代码中,当调用run()时,会弹出JFrames,并填充JPanel。在第二段代码中,会弹出JFrames,但JFrames不会填充,窗口似乎不负责任Java 鼠标事件处理以创建新的填充JFrames,java,swing,mouseevent,Java,Swing,Mouseevent,我看到一些我真的不理解的行为。在第一段代码中,当调用run()时,会弹出JFrames,并填充JPanel。在第二段代码中,会弹出JFrames,但JFrames不会填充,窗口似乎不负责任 final Class g = TowerView.class final ArrayList<Class> s = (ArrayList<Class>) sorters.clone(); final Quantifiable [] d = InventoryItem.getRando
final Class g = TowerView.class
final ArrayList<Class> s = (ArrayList<Class>) sorters.clone();
final Quantifiable [] d = InventoryItem.getRandomArray(SIZE);
run (s, g, d);
final Class g=TowerView.Class
final ArrayList s=(ArrayList)sorter.clone();
最终可量化[]d=InventoryItem.getRandomArray(大小);
运行(s、g、d);
这不起作用:
final Class g = TowerView.class
final ArrayList<Class> s = (ArrayList<Class>) sorters.clone();
final Quantifiable [] d = InventoryItem.getRandomArray(SIZE);
runButton.addMouseListener(new MouseAdapter() {
@SuppressWarnings("unchecked")
public void mouseClicked(MouseEvent event) {
run(s, g, d);
}
});
final Class g=TowerView.Class
final ArrayList s=(ArrayList)sorter.clone();
最终可量化[]d=InventoryItem.getRandomArray(大小);
runButton.addMouseListener(新的MouseAdapter(){
@抑制警告(“未选中”)
公共void mouseClicked(MouseEvent事件){
运行(s、g、d);
}
});
您需要在事件侦听器中执行操作,即在另一个线程中运行(s、g、d)命令
摘自
关于事件侦听器,需要记住的最重要的规则是
他们应该很快执行。因为所有的绘画和
事件侦听方法在同一线程中执行,这是一个缓慢的过程
事件监听器方法会使程序看起来反应迟钝
重新粉刷自己。如果您需要执行一些长时间的操作
事件的结果,通过启动另一个线程(或
以某种方式将请求发送到另一个线程)以执行该操作。
有关使用线程的帮助,请参阅Swing中的并发
您需要在事件侦听器内部执行操作,即在另一个线程中运行(s、g、d)命令 摘自 关于事件侦听器,需要记住的最重要的规则是 他们应该很快执行。因为所有的绘画和 事件侦听方法在同一线程中执行,这是一个缓慢的过程 事件监听器方法会使程序看起来反应迟钝 重新粉刷自己。如果您需要执行一些长时间的操作 事件的结果,通过启动另一个线程(或 以某种方式将请求发送到另一个线程)以执行该操作。 有关使用线程的帮助,请参阅Swing中的并发
我刚想好怎么做。。。我一直在寻找一些写着“接受”的东西,我同意线程可能是一个问题,但是如果没有更多的信息,很难猜测代码会在哪里陷入困境。我只是想出了如何做。。。我一直在寻找“接受”这个词。我同意线程可能是一个问题,但如果没有更多信息,很难猜测代码会在哪里陷入困境。+1,另请参阅以获取更多信息和与Swing相关的解决方案。+1,另请参阅以获取更多信息和与Swing相关的解决方案。