gpt4 book ai didi

java - JList 在自动滚动和自动选择时变坏(GUI 问题)

转载 作者:行者123 更新时间:2023-11-30 09:44:03 26 4
gpt4 key购买 nike

我已经创建了一个日志来检查代理。

这个日志告诉我,哪个代理已经在使用中(通过选择项目)。问题是当日志自动滚动和自动选择时,我会遇到这样的 GUI 问题(有时最糟糕,有时更好):

enter image description here

此外,GUI 修改(添加项目)是从其他线程进行的。

谁能告诉我如何预防?代码是:

class Log extends JScrollPane {
private JList lista;
private DefaultListModel modelListy;
boolean selScroll;

Log(String opis, boolean selScroll) {
super();
modelListy = new DefaultListModel();
lista = new JList(modelListy);
setViewportView(lista);
setBorder(BorderFactory.createTitledBorder(opis));
this.selScroll = selScroll;
setHorizontalScrollBarPolicy(HORIZONTAL_SCROLLBAR_NEVER);
Font displayFont = new Font("Tahoma", Font.BOLD, 10);
lista.setFont(displayFont);
}

void clear() {
modelListy.clear();
}

void addItem(Object obj) {
modelListy.addElement(obj);
if(!selScroll) {
lista.ensureIndexIsVisible(modelListy.size()-1);
}
}

void selectItem(int i) {
lista.setSelectedIndex(i);
if(selScroll) {
lista.ensureIndexIsVisible(i+1);
}
}

String getSelectedItem() {
return (String)lista.getSelectedValue();
}

int itemCount() {
return modelListy.size()-1;
}

int getSelectedIndex() {
return lista.getSelectedIndex();
}
}

最佳答案

尝试在 SwingUtilities.invokeLater() 中调用所有 lista.ensureIndexIsVisible(...);。调用重绘时模型更新可能未完成。

关于java - JList 在自动滚动和自动选择时变坏(GUI 问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8088255/

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