我正在尝试使用以下方法更新 JLabelsetText()
方法,但我无法重绘 JLabel。我必须使用repaint()
方法来做到这一点?
这是代码的一部分,我没有收到任何错误,但它没有更新 JLabel。
public void actionPerformed(ActionEvent e) {
fc = new JFileChooser();
if(e.getSource() == addButton) {
int returnVal = fc.showOpenDialog(Main.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
filesList = fc.getSelectedFiles();
setFilesList(filesList);
StringBuilder logString = new StringBuilder();
logString.append("Files to Convert " + "\n");
for(int i = 0; i < getFiles().length; i++) {
logString.append(filesList[i].getAbsolutePath());
}
//JLabel log = new JLabel(); created above.
log.setText(logString.toString());
} else {
//log.append("Open command cancelled by user." + newline);
}
//log.setCaretPosition(log.getDocument().getLength());
}
}
JLabel 不需要重绘调用。只需调用 setText(...) 即可更改标签的文本,这就是所需的全部内容。
我想知道您的问题是否是并发问题,您正在 Swing 事件线程上执行长时间运行的进程,这会阻止您的标签更新其文本。
如果是这样,请考虑在后台线程(例如 SwingWorker 提供的线程)中执行长时间运行的进程,然后更新 Swing 线程上的 JLabel 文本,例如可以通过 SwingWorker 的发布/处理方法来完成。
有关这方面的更多信息,请查看课程:Swing 中的并发 http://docs.oracle.com/javase/tutorial/uiswing/concurrency/教程。
Mario De...关于无法在 JLabel 上打印简单换行符的说法也是正确的。 1+给他的回答。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)