Not*_*erd 2 java swing jtable jprogressbar
我有以下问题:
我有一个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;
}
}
Run Code Online (Sandbox Code Playgroud)
表格由swingworker线程每10毫秒更新一次,所以不要介意.
progressBar的内部状态(确定与不确定)是非常不同的 - 在同一实例上它们之间的切换可能是原因.尝试为每个实例使用一个实例
public class MyRenderer ....
JProgressBar determinate;
JProgressBar indeterminate;
public Component getTableCellRendererComponent(...) {
if (value.isDeterminate) {
...
return determinate;
}
....
return undeterminate
}
Run Code Online (Sandbox Code Playgroud)
编辑
检查:它正在工作,虽然看起来有点奇怪,许多不确定的单元格是"在步骤中"动画.请注意:内部 - 在ui委托中 - 动画状态没有记录,因此可能存在根本不起作用的LAF(fi Substance,afair).