【发布时间】:2012-03-06 14:48:45
【问题描述】:
我在 JTable 中实现了 JProgressBar。 我使用 renderer 作为 ProgressBar NOT EDITOR。
现在我尝试实现一个 ProgressBar 设置值,但由于 EDT 无法正常工作,因此我使用了 SwingUtilties,但效果不佳。
预期行为 - JProgressBar 必须将值设置为 80 , 目前只显示0%
public class SkillSetTableProgressBarRenderer extends JProgressBar implements
TableCellRenderer {
public SkillSetTableProgressBarRenderer() {
super(0, 100);
super.setPreferredSize(new Dimension(100, 80));
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
final JProgressBar bar = (JProgressBar) value;
if (bar.getString().equals("JAVA") || bar.getString().equals("SWING"))
super.setString("Mellow");
else
super.setString("GOOD");
setOpaque(true);
table.setOpaque(true);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
System.err.println("MAIN ANDER");
setValue(80);
bar.setValue(80);
}
});
super.setStringPainted(true);
super.setIndeterminate(true);
super.setPreferredSize(new Dimension(140, 16));
if (isSelected) {
super.setBackground(table.getSelectionBackground());
super.setForeground(table.getSelectionForeground());
// this.setBackground(table.getSelectionBackground());
} else {
super.setForeground(table.getForeground());
super.setBackground(Color.WHITE);
}
return this;
}
}
【问题讨论】:
-
请定义“不工作”、您的预期行为、异常等。
-
不确定这是否与此线程相似,但仅供参考:stackoverflow.com/questions/9288923/how-to-update-jprogress-bar
标签: java swing concurrency jprogressbar tablecellrenderer