gpt4 book ai didi

java - Jlist ensureIndexIsVisible 导致异常

转载 作者:行者123 更新时间:2023-11-30 11:46:29 25 4
gpt4 key购买 nike

我可以使用下一步按钮在 Jlist 中随机查找项目。当我快速按下一个按钮时,出现异常:线程“Thread-7”中的异常 java.lang.ClassCastException: sun.java2d.NullSurfaceData cannot be cast to sun.java2d.d3d.D3DSurfaceData那么既然点击下一步的频率触发了这个问题,我们可以说线程有问题吗?请注意,jlist 中没有更新。 Jlist 已初始化并在开始时填充了元素,然后只需使用下一步按钮随机查找项目。如果我删除 ensureIndexIsVisible 就没有问题了。

我希望下面的摘要代码对您有所帮助:

public class B_Object {
private NewJFrame njf = new NewJFrame();
HandlePlay hPlay = new HandlePlay(njf);

njf.nextButton.addActionListener(new java.awt.event.ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
playNext();
}
});
}

public class HandlePlay {
private NewJFrame n_j_f;
HandlePlay(NewJFrame njf){
n_j_f = njf;
}
private void setDisplay(int i) {
String str = "dummy";
n_j_f.jList1.setSelectedIndex(i);
n_j_f.setTitle(str);
n_j_f.jTextArea1.setText(str);
n_j_f.jList1.ensureIndexIsVisible(n_j_f.jList1.getSelectedIndex());
}
}

最佳答案

在尝试不同的线程并搜索事件派发线程后,我发现它与 EDT 有关。为了解决这个问题,下面的修改就足够了:

private void test(final int i) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
jList1.setSelectedIndex(i);
System.out.println("javax.swing.SwingUtilities.isEventDispatchThread()=" + javax.swing.SwingUtilities.isEventDispatchThread());
jList1.ensureIndexIsVisible(i);
}
});
}

因此请确保如果您间歇性地出现此类 gui 问题,请检查您是否在 EDT 中执行该操作,通过 isEventDispatchThread() 检查。

关于java - Jlist ensureIndexIsVisible 导致异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9727011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com