报错部分为Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ProgressBarRenderer.getTableCellRendererComponent(ProgressBarRenderer.java:33)
at javax.swing.JTable.prepareRenderer(JTable.java:5729)
at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2075)
at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1977)
at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1773)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
at javax.swing.JComponent.paintComponent(JComponent.java:763)
at javax.swing.JComponent.paint(JComponent.java:1027)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JViewport.paint(JViewport.java:747)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5122)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:277)
at javax.swing.RepaintManager.paint(RepaintManager.java:1217)
at javax.swing.JComponent._paintImmediately(JComponent.java:5070)
at javax.swing.JComponent.paintImmediately(JComponent.java:4880)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)at ProgressBarRenderer.getTableCellRendererComponent(ProgressBarRenderer.java:33)对应的代码为:
class ProgressBarRenderer extends DefaultTableCellRenderer{
private static final long serialVersionUID = 1L;
private JProgressBar b;
public ProgressBarRenderer(JProgressBar p){
super();
b = p ;
setOpaque(true);
b = new JProgressBar();
//是否显示进度字符串
b.setStringPainted(true);
b.setMinimum(0);
b.setMaximum(100);
b.setValue(0);
//是否绘制边框
b.setBorderPainted(true);
b.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Integer i = (Integer) value;
// String text = "";
// super.getTableCellRendererComponent(table, text, isSelected, hasFocus,
// row, column);
b.setValue(i);
return b;
}
}
实在找不出来错误 麻烦各位大牛帮忙看下 谢谢
at ProgressBarRenderer.getTableCellRendererComponent(ProgressBarRenderer.java:33)
at javax.swing.JTable.prepareRenderer(JTable.java:5729)
at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2075)
at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1977)
at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1773)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
at javax.swing.JComponent.paintComponent(JComponent.java:763)
at javax.swing.JComponent.paint(JComponent.java:1027)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JViewport.paint(JViewport.java:747)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1036)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5122)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:277)
at javax.swing.RepaintManager.paint(RepaintManager.java:1217)
at javax.swing.JComponent._paintImmediately(JComponent.java:5070)
at javax.swing.JComponent.paintImmediately(JComponent.java:4880)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)at ProgressBarRenderer.getTableCellRendererComponent(ProgressBarRenderer.java:33)对应的代码为:
class ProgressBarRenderer extends DefaultTableCellRenderer{
private static final long serialVersionUID = 1L;
private JProgressBar b;
public ProgressBarRenderer(JProgressBar p){
super();
b = p ;
setOpaque(true);
b = new JProgressBar();
//是否显示进度字符串
b.setStringPainted(true);
b.setMinimum(0);
b.setMaximum(100);
b.setValue(0);
//是否绘制边框
b.setBorderPainted(true);
b.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Integer i = (Integer) value;
// String text = "";
// super.getTableCellRendererComponent(table, text, isSelected, hasFocus,
// row, column);
b.setValue(i);
return b;
}
}
实在找不出来错误 麻烦各位大牛帮忙看下 谢谢
at ProgressBarRenderer.getTableCellRendererComponent(ProgressBarRenderer.java:33)GOOD LUCKy!
但是我初始化了吧
刚在网上查到这个错误和JTable的有关 不知道如何修改
FtpFrame.addProgressBar(filename); //先进入此函数public static void addProgressBar(String filename) {
Object[] rowData = new Object[7];
rowData[0] = filename;
rowData[1] = "filenames.size()";
rowData[2] = "--->>";
rowData[3] = "file";
rowData[4] = "host";
rowData[5] = "正在传输";
model1.addRow(rowData);
} 继续运行FtpFrame.change(filename, p1);public static void change(String filename,int p)
{
int i = 0;
boolean isdoing = true;
while(isdoing){
if(table1.getValueAt (i, 0)!=null ){
System.out.println(table1.getValueAt (i, 0));
if(table1.getValueAt (i, 0).equals(filename)){
isdoing = false;
}
else{
i++;
}
}
}
p1 = p;
j = i;
Thread t = new ProgressBarThread(table1,i,p);
t.start();
table1.updateUI();
}class ProgressBarThread extends Thread {
int index;
int p1;
JTable table1 = new JTable();
public ProgressBarThread(JTable table,int i,int p){
index = i;
table1 = table;
p1 = p;
}
public void run() {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
table1.setValueAt(p1, index, 6);
// table1.updateUI();
}
});
}
} class ProgressBarRenderer extends DefaultTableCellRenderer{
private static final long serialVersionUID = 1L;
private JProgressBar b = new JProgressBar(0, 100);
public ProgressBarRenderer(){
super();
// b = p ;
setOpaque(true);
b = new JProgressBar();
//是否显示进度字符串
b.setStringPainted(true);
// b.setMinimum(0);
// b.setMaximum(100);
// b.setValue(0);
//是否绘制边框
b.setBorderPainted(true);
b.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Integer i = (Integer) value;
String text = "完成";
if (i < 0) {
//删除
text = "取消完毕";
} else if (i < 100) {
b.setValue(i);
return b;
}
super.getTableCellRendererComponent(table, text, isSelected, hasFocus,
row, column);
return this;
}
}