gpt4 book ai didi

java - JList 换行问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:23:57 25 4
gpt4 key购买 nike

当我在运行时向它添加元素时,它似乎没有正确更新换行。当框架重新生效时,它将继续在最后一行呈现新项目(甚至保留旧的换行),但它不会继续并换行到新行。

只有在调整框架大小时才能重新包装列表(无效、验证和重绘不起作用)。

    final JFrame frame = new JFrame();
final Vector<String> strings = new Vector<String>();
JList list = new JList(strings);

list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
list.setVisibleRowCount(-1);

strings.add(" ------------------ add ------------------");
strings.add(" ------------------ add ------------------");

JButton button = new JButton("add");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
strings.add(" ------------------ add ------------------");
//frame.invalidate();
//frame.validate();
//frame.repaint();
}
});

JPanel panel = new JPanel(new BorderLayout());
panel.add(list, BorderLayout.CENTER);
panel.add(button,BorderLayout.SOUTH);

frame.setSize(400,400);
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

最佳答案

使用 ListModel ,例如 DefaultListModel .它会将正确的事件“发射”到 JList。以便在将对象添加到模型或从模型中删除对象时进行更新。

public static void main(String[] args) {

JFrame frame = new JFrame("Test");

final DefaultListModel model = new DefaultListModel();

model.addElement("---added---");
model.addElement("---added---");

frame.add(new JList(model), BorderLayout.CENTER);
frame.add(new JButton(new AbstractAction("Add") {

@Override
public void actionPerformed(ActionEvent arg0) {
model.addElement("---added again---");
}
}), BorderLayout.SOUTH);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 150);
frame.setVisible(true);
}

对于“换行问题”,只需使用 JList(ListModel)构造函数它将使用 JList.VERTICAL呈现您想要的列表的属性。

关于java - JList 换行问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8674359/

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