- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 JAVA 程序中有一个部分,您单击一个按钮,actionListener 应该经历以下过程;
如下
uploadNotamButton.addActionListener((ActionEvent e) -> {
if(e.getSource()==uploadNotamButton)
uploadNotamButton.setText("STANDBY");
progressLabel.setText("Process Has Begun, standby...");
progressLabel.setVisible(true);
uploadNotams();
uploadNotamButton.setText("COMPLETE");
});
但是,当我按下按钮时,按钮文本不会改变,标签不会显示,但方法会执行。仅当该方法完成时,按钮文本才会更改为“完成”(从不显示“待机”),并且显示“该过程已开始,待机”的标签(当该过程完成时)。
这是defaultlistmodel的一个优先于一切的功能还是我的编码经验不足?
此外,在该方法中分析的数据会一次性显示在 JList 中,而不是一次显示每个元素。如果数据在分析时显示在列表中,那么至少会表明正在发生某些事情。这对于 defaultListModel 来说是不可能的吗?
提前非常感谢
PG
最佳答案
Is this a feature of defaultlistmodel that takes priority over everything or my coding inexperience?
这与 DefaultListModel 无关,而与 Swing 是单线程有关。您的长时间运行的进程正在 Swing 事件线程上运行,阻止该线程执行其必要的操作,包括在 GUI 上绘制文本和图像以及与用户交互。
解决方案是使用后台线程(例如可以通过 SwingWorker 获取),在此后台线程中运行长时间运行的代码,向工作线程添加一个 PropertyChangeListener 以在完成时收到通知,然后响应此通知.
例如(代码未测试)
uploadNotamButton.addActionListener((ActionEvent e) -> {
// if(e.getSource()==uploadNotamButton)
uploadNotamButton.setText("STANDBY");
progressLabel.setText("Process Has Begun, standby...");
progressLabel.setVisible(true);
// create worker to do background work
SwingWorker<Void, Void> worker = new SwingWorker<>() {
@Override
protected Void doInBackground() throws Exception {
// this is all done within a background thread
uploadNotams(); // don't make any Swing calls from within this method
return null;
}
};
// get notified when the worker is done, and respond to it
worker.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue == SwingWorker.StateValue.DONE) {
uploadNotamButton.setText("COMPLETE");
// the code below needs to be surrounded by a try/catch block
// and you'll need to handle any exceptions that might be caught
((SwingWorker) evt.getSource()).get();
}
}
});
worker.execute(); // run the worker
});
关于java - DefaultListModel 是否会覆盖我的 Action 监听器中的 Action 顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37773432/
这是它: btnInsertL.addActionListener(new ActionListener() { @Override public void actio
我在这里做错了什么?我有一个显示我的列表的 GUI,在另一个类中,我想在单击按钮时添加到列表中。单击按钮时,它会询问名称,但永远不会添加。 //class with GUI public class
我正在尝试扩展 DefaultListModel,以便它可以排序和迭代。我在这里找到了一些代码 http://www.javalobby.org/java/forums/t94074.html .我现
有没有办法将数组中的所有字符串添加到 JList 中?我正在使用 DefaultListModel,但我不知道如何使用它。有没有办法只使用 addElement 然后添加数组?我试过了,但它不起作用。
我正在尝试一种不同的方法只是为了练习目的。我知道这看起来很荒谬。我的目标是在构造函数初始化时检索数字数组。但我做不到。我怎样才能做到这一点? public class Myclass extends
我有一个程序需要更新 JList 的内容,它是另一个线程上的 DefaultListModel。由于内容的数量可能会不时发生变化,所以我只是在更新时清除所有内容并将新内容添加到DefaultListM
为什么 myList 是空的? 从输出中我可以看到 myList 没有正确的大小,但消息有。 输出: Apr 23, 2012 4:28:42 PM net.bounceme.dur.nntp.Mes
使用java版本9我有一些测试代码,用于从通过 DefaultListModel 传递引用创建的列表中删除项目。这就是我所做的。 创建 DefaultListModel 对象 通过调用 addElem
我正在 Eclipse 调试器中查看以下表达式 downsPanel.relsListModel.elementAt(4)==oldValue 和 downsPanel.relsListModel.c
我有这个 DefaultListModel DefaultListModel listModel; //constructor does the right hting... etc.. I skip
我正在使用 Swing 开发一个项目,并且有以下事件处理程序: private void txtInputKeyPressed(java.awt.event.KeyEvent evt) {
我正在尝试在 java 中组合两个 defaultListModel,这样我就可以将该模型设置为 JList。该程序基本上是使用 GUI 在购物车中添加和删除商品。当我按下添加按钮时,它不应该从购物车
这个问题已经有答案了: Java - Updating JList after changing an object (3 个回答) 已关闭 9 年前。 我有一个Jlist与 DefaultListM
我正在尝试显示一个项目列表,当用户单击某个项目时,清除该列表并显示另一个列表。 如果我运行它并单击显示列表上的第一个条目,程序就会因一长串运行时异常而终止。如果我删除clear()行(下面注释),它运
我有一个JList由 DefaultListModel 支持并有一个自定义CellRenderer . CellRenderer用于添加对 JCheckBox 的支持在我的JList . 当我尝试修改
我希望我已经很好地解释了我在这里所追求的内容。我在检索已放入 DefaultListModel 中的对象类型时遇到问题。 public class HiddenIntegerFieldListItem
我有一个 list : JList characterList = new JList(characterListModel); characterListModel = new DefaultLis
我正在研究DefaultListModel。我需要将所选项目移动到列表中的第一个或最后一个(不是上下)位置。如何在 DefaultListModel 中的第一个或最后一个位置移动所选项目而不交换? 最
这是我的代码: HashMap inst1 = new HashMap(instructorIO.getInstructors()); instListModel = new DefaultListM
我创建了一个类来存储两个属性 public class MailEntry { private String mail; private MailFormat format; // t
我是一名优秀的程序员,十分优秀!