Java 修改此类渲染,将进度条的大小更改为变量?
我有以下代码:Java 修改此类渲染,将进度条的大小更改为变量?,java,swing,jtable,rendering,jprogressbar,Java,Swing,Jtable,Rendering,Jprogressbar,我有以下代码: TableColumn column = jTable2.getColumnModel().getColumn(1); column.setCellRenderer(new ProgressRenderer()); 类ProgressRenderer: class ProgressRenderer extends DefaultTableCellRenderer { private final JProgressBar b = new JProgressBar(0, 1
TableColumn column = jTable2.getColumnModel().getColumn(1);
column.setCellRenderer(new ProgressRenderer());
类ProgressRenderer:
class ProgressRenderer extends DefaultTableCellRenderer {
private final JProgressBar b = new JProgressBar(0, 100);// I NEED RECEIVE DE VALUE, //LIKE THIS new JProgressBar(0, MAX);
private final JPanel p = new JPanel(new BorderLayout());
public ProgressRenderer() {
super();
setOpaque(true);
b.setStringPainted(true);
p.add(b);
//p.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Integer i = (Integer) value;
String text = "Finalizou o Lote";
if (i < 0) {
text = "Pausa";
} else if (i < 100) {
b.setValue(i);
return p;
}
super.getTableCellRendererComponent(table, text, isSelected, hasFocus, row, column);
return this;
}
@Override
public void updateUI() {
super.updateUI();
if (p != null) {
SwingUtilities.updateComponentTreeUI(p);
}
}
}
类ProgressRenderer()
----编辑----
谢谢,但现在我有个大问题,因为:
TableColumn column = jTable2.getColumnModel () GetColumn (1).;
column.setCellRenderer (new ProgressRenderer (maxValue));//
//如何知道何时添加对象以更改maxValue
我将使用此代码在jtable中插入值
private LinhasOnline getLinha() {
LinhasOnline linha = new LinhasOnline();
linha.setNome("Linha "+j);
linha.setcont(j*(10));
linha.setmax(100);
j++;
return linha;
}
private void addLinha() {
getModel().addLinha(getLinha());//
}
//我的getmodel
private LinhasOnlineTableModel getModel() {
if (model == null) {
model = (LinhasOnlineTableModel) getTblLinhasOnline().getModel();
}
return model;
}
//我的GetBllinhasOnline()
您可以像下面这样更改您的类:
class ProgressRenderer extends DefaultTableCellRenderer {
private final JProgressBar b;// I NEED RECEIVE DE VALUE, //LIKE THIS new JProgressBar(0, MAX);
private final JPanel p = new JPanel(new BorderLayout());
public ProgressRenderer(int maxValue) {
super();
b = new JProgressBar(0, maxValue);
setOpaque(true);
b.setStringPainted(true);
p.add(b);
}
...
}
谢谢,但现在有其他问题,请看我的编辑评论,很抱歉,因为这样必须编码,但对我来说很难解释。如果您需要更好的解释,请告诉我:)
private LinhasOnlineTableModel getModel() {
if (model == null) {
model = (LinhasOnlineTableModel) getTblLinhasOnline().getModel();
}
return model;
}
private JTable getTblLinhasOnline() {
if (jTable2 == null) {
jTable2 = new JTable();
jTable2.setModel(new LinhasOnlineTableModel());
TableColumn column = jTable2.getColumnModel().getColumn(1);
column.setCellRenderer(new ProgressRenderer(max)); // need put the value of object( setmax)
}
return jTable2;
}
class ProgressRenderer extends DefaultTableCellRenderer {
private final JProgressBar b;// I NEED RECEIVE DE VALUE, //LIKE THIS new JProgressBar(0, MAX);
private final JPanel p = new JPanel(new BorderLayout());
public ProgressRenderer(int maxValue) {
super();
b = new JProgressBar(0, maxValue);
setOpaque(true);
b.setStringPainted(true);
p.add(b);
}
...
}