gpt4 book ai didi

java - 每次选择发生变化时添加 ListSelectionListener 调用

转载 作者:行者123 更新时间:2023-12-01 10:03:34 27 4
gpt4 key购买 nike

我有包含一些行的 Jtable。如果我选择某些行,则每次都会调用 addListSelectionListener(对于每个行选择)。有什么方法可以避免这些多次调用,因为如果我选择 10000 行,它会减慢进程

显示行选择的代码

for (int i = 0; i < sArray.length; i++)
{
// int viewindex = mTableForActionListener.getRowSorter().convertRowIndexToView(i);
mTableForActionListener.addRowSelectionInterval(sArray[i].intValue(), sArray[i].intValue());
}

mDocListTablemTableForActionListener 的实例。调用它的代码

mDocListTable.getSelectionModel().addListSelectionListener(new ListSelectionListener()
{
@Override
public void valueChanged(ListSelectionEvent e)
{
handle_TableSelection(e);
}
});

最佳答案

解决方案 1:

在 for 循环之前删除监听器,并在 for 循环之后将其添加回来。

ListSelectionListener listener = new ListSelectionListener()
{
@Override
public void valueChanged(ListSelectionEvent e)
{
handle_TableSelection(e);
}
};

mDocListTable.getSelectionModel().removeListSelectionListener(listener);
for (int i = 0; i < sArray.length; i++)
{
mTableForActionListener.addRowSelectionInterval(sArray[i].intValue(), sArray[i].intValue());
}
mDocListTable.getSelectionModel().addListSelectionListener(listener);
// add some code here to deal with the new selections in the table.

解决方案 2:

ListSelectionEvent中,检查是否仍在进行调整。

mDocListTable.getSelectionModel().addListSelectionListener(new ListSelectionListener()
{
@Override
public void valueChanged(ListSelectionEvent e)
{
if(e.getValueIsAdjusting()) return;
handle_TableSelection(e);
}
});

关于java - 每次选择发生变化时添加 ListSelectionListener 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36627739/

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