gpt4 book ai didi

java - 表中的 JProgressBar 动画

转载 作者:行者123 更新时间:2023-12-02 11:02:26 25 4
gpt4 key购买 nike

我有以下问题:

我有一个 JTable,它显示命令的进度。我有两种命令。确定的和不确定的命令。

如果表中只有不确定的进度条,则进度显示正确。但如果我其中有一个确定的进度条,则另一个不确定的进度条将不会被动画化。

这是我的代码:

class ProgressBarRenderer implements TableCellRenderer {

/** The bar. */
private JProgressBar bar = new JProgressBar() {
public boolean isDisplayable() {
return true;
};
};

@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
ProgressBarInfo pbi = (ProgressBarInfo) value;
if (pbi.getType() == Progress.LS) {
if (pbi.getValue() == -1) {
bar.setIndeterminate(false);
bar.setValue(0);
bar.setString("Progress ended");
} else {
bar.setIndeterminate(true);
bar.setString(pbi.getValue() + " " + pbi.getText());
}
bar.setStringPainted(true);

return bar;
} else if (pbi.getType() == Progress.SCP) {
if (pbi.getValue() == -1) {
bar.setIndeterminate(false);
bar.setValue(0);
bar.setString("Progress ended");
} else {
bar.setValue(pbi.getValue());
bar.setString(pbi.getValue() + "% " + pbi.getText());
}
bar.setIndeterminate(false);
bar.setStringPainted(true);
}
return bar;
}
}

该表由 swingworker 线程每 10 毫秒更新一次,因此不必介意。

最佳答案

进度条的内部状态(确定与不确定)非常不同 - 在同一实例上在它们之间切换可能是原因。尝试为每个对象使用一个实例

public class MyRenderer ....
JProgressBar determinate;
JProgressBar indeterminate;

public Component getTableCellRendererComponent(...) {
if (value.isDeterminate) {
...
return determinate;
}
....
return undeterminate
}

编辑

已检查:它正在工作,尽管对于许多“同步”动画的不确定单元格可能看起来有点奇怪。请注意:UI 委托(delegate)中的内部动画状态未记录,因此可能存在根本无法工作的 LAF(例如 Substance,公平地说)。

关于java - 表中的 JProgressBar 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9513589/

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