gpt4 book ai didi

java - DefaultListModel.clear 错误

转载 作者:行者123 更新时间:2023-12-01 19:19:11 24 4
gpt4 key购买 nike

我正在尝试显示一个项目列表,当用户单击某个项目时,清除该列表并显示另一个列表。

如果我运行它并单击显示列表上的第一个条目,程序就会因一长串运行时异常而终止。如果我删除clear()行(下面注释),它运行正常。添加 try/catch 没有透露任何对我有用的信息。对长代码表示歉意,但我不知道如何缩短并仍然生成错误。

我做错了什么?

import java.util.*;

import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

class ListGui extends JPanel implements ListSelectionListener {

private static JList list;
private static DefaultListModel listModel = new DefaultListModel();

public ListGui() {
super(new BorderLayout());
list = new JList(listModel);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.addListSelectionListener(this);
JScrollPane listScrollPane = new JScrollPane(list);
add(listScrollPane, BorderLayout.CENTER);
}

public static void Populate(List<String> lines) {
listModel.clear();
for(String line : lines) {
listModel.addElement(line);
}
}

public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting() == false) {
List<String> out = new ArrayList<String>();
out.add("three");
out.add("four");
Populate(out);
}
}
}

public class TestClear {

static JComponent newContentPane = new ListGui();

private static void createAndShowGUI() {
JFrame frame = new JFrame("toast");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {

List<String> out = new ArrayList<String>();

createAndShowGUI();

out.add("one");
out.add("two");
ListGui.Populate(out);
}
}

最佳答案

I'm trying to display a list of items and, when the user clicks on an item, to clear the list and display another list.

对我来说这听起来不是最好的设计。每当您单击某个项目或使用箭头键在列表中向上或向下移动时,选择都会发生变化。我确信对于喜欢使用键盘的用户来说,您不希望每次使用箭头键时列表都会更改。

正常的设计是通过“双击”或当用户从键盘上输入“Enter”时调用列表上的操作。使用 List Action 可以轻松实现这一点概念。

但是,如果您确实想更新每个选择的列表,那么我会使用如下代码:

list.removeListSelectionListener( this );
populate(...);
list.addListSelectionListener(this);

关于java - DefaultListModel.clear 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5200096/

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