public class NewJFrame extends javax.swing.JFrame {
private JTable tab;
private JProgressBar progress; /**
* Auto-generated main method to display this JFrame
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
NewJFrame inst = new NewJFrame();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}

public NewJFrame() {
super();
initGUI();
}

private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
{
TableModel tabModel = 
new DefaultTableModel(
new String[][] { { "One", "Two" }, { "Three", "Four" } },
new String[] { "Column 1", "Column 2" });
tab = new JTable(){
@Override
public TableCellRenderer getCellRenderer(int row, int column) {
if(row ==1 && column==1){
return new TableCellRenderer(){
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
progress = getProgress();
progress.setMinimum(0);
progress.setMaximum(100);
progress.setValue(0);
progress.setStringPainted(true);

new Thread() {
        public void run() { 
         for(int i=1 ; i<=100 ; i++){
         try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
progress.setValue(i);
}
        }
    }.start();

return progress;
};
};
} else {
return super.getCellRenderer(row, column);
}
}
};
getContentPane().add(tab, BorderLayout.CENTER);
tab.setModel(tabModel);
}
pack();
setSize(400, 300);
} catch (Exception e) {
    //add your error handling code here
e.printStackTrace();
}
}

private JProgressBar getProgress() {
if(progress == null) {
progress = new JProgressBar();
}
return progress;
}
}

解决方案 »

  1.   

    你贴的代码太乱了,给你个用SwingWorker做的progressBar 你看看,也许会对你有用
    http://download.oracle.com/javase/tutorial/uiswing/concurrency/worker.html
      

  2.   


    import java.awt.BorderLayout;
    import java.awt.Component;import javax.swing.JProgressBar;
    import javax.swing.JTable;
    import javax.swing.SwingUtilities;
    import javax.swing.WindowConstants;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableCellRenderer;
    import javax.swing.table.TableModel;public class NewJFrame extends javax.swing.JFrame implements Runnable {
    private JTable tab;
    private JProgressBar progress; public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    NewJFrame inst = new NewJFrame();
    inst.setLocationRelativeTo(null);
    inst.setVisible(true);
    //////////////////////////////////////////////
    new Thread(inst).start();
    //////////////////////////////////////////////
    }
    });
    } public NewJFrame() {
    super();
    initGUI();
    } private void initGUI() {
    try {
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    {
    TableModel tabModel = new DefaultTableModel(new String[][] {
    { "One", "Two" }, { "Three", "Four" } }, new String[] {
    "Column 1", "Column 2" });
    tab = new JTable() {
    @Override
    public TableCellRenderer getCellRenderer(int row, int column) {
    if (row == 1 && column == 1) {
    return new TableCellRenderer() {
    public Component getTableCellRendererComponent(
    JTable table, Object value,
    boolean isSelected, boolean hasFocus,
    int row, int column) {
    //////////////////////////////////////////////
    if(value.getClass().getName().equals("java.lang.String"))
    value = new Integer("0");
    //////////////////////////////////////////////
    progress = getProgress();
    progress.setMinimum(0);
    progress.setMaximum(100);
    progress.setValue(0);
    progress.setStringPainted(true);
    //////////////////////////////////////////////
    progress.setValue((Integer)value);
    //////////////////////////////////////////////
    return progress;
    };
    };
    } else {
    return super.getCellRenderer(row, column);
    }
    }
    };
    getContentPane().add(tab, BorderLayout.CENTER);
    tab.setModel(tabModel);
    }
    pack();
    setSize(400, 300);
    } catch (Exception e) {
    e.printStackTrace();
    }
    } private JProgressBar getProgress() {
    if (progress == null) {
    progress = new JProgressBar();
    }
    return progress;
    } //////////////////////////////////////////////
    public void run() {
    for (int i = 1; i <= 100; i++) {
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    tab.getModel().setValueAt(i, 1, 1);
    }
    }
    //////////////////////////////////////////////
    }
    修改的代码见注释中间的部分!