如何在Jtable中添加JProgressBar?
下边是我写的代码但是没有效果
//在Jtable的指定列添加
table.getColumnModel().getColumn(5).setCellEditor(new MyProgressCellEditor(1000));
table.getColumnModel().getColumn(5).setCellRenderer(new ProgressPanel());package com.jframe;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.AbstractCellEditor;
import javax.swing.JProgressBar;
import javax.swing.JTable;
import javax.swing.Timer;
import javax.swing.table.TableCellEditor;import com.rz.SendMail;public class MyProgressCellEditor extends AbstractCellEditor implements TableCellEditor,ActionListener{ private JProgressBar jpb;
private Timer time;
private int maxnum;//jpb的最大值
public MyProgressCellEditor(int maxnum){
jpb=new JProgressBar();
jpb.setStringPainted(true);
jpb.setSize(20, 8);
this.maxnum=maxnum;
//jpb.setOrientation(JProgressBar.HORIZONTAL);
jpb.setMinimum(0);
jpb.setMaximum(maxnum);
jpb.setValue(10);
time=new Timer(2, this);
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
// TODO Auto-generated method stub
return jpb;
} @Override
public Object getCellEditorValue() {
return jpb.getValue();
} @Override
public void actionPerformed(ActionEvent e) {
int i=SendMail.successMail;//静态变量
jpb.setValue(i);
if(maxnum==i){
stopShow();
}
}
/**
* 启动调用
*/
public void starShow(){
time.start();
}
/**
* 停止调用
*/
public void stopShow(){
time.stop();
}
}package com.jframe;import java.awt.Component;import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;public class ProgressPanel extends JProgressBar implements TableCellRenderer{ @Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
// TODO Auto-generated method stub
return this;
}
}
上边是我写的代码,但是在加入table后没有效果,请大家帮忙!
下边是我写的代码但是没有效果
//在Jtable的指定列添加
table.getColumnModel().getColumn(5).setCellEditor(new MyProgressCellEditor(1000));
table.getColumnModel().getColumn(5).setCellRenderer(new ProgressPanel());package com.jframe;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.AbstractCellEditor;
import javax.swing.JProgressBar;
import javax.swing.JTable;
import javax.swing.Timer;
import javax.swing.table.TableCellEditor;import com.rz.SendMail;public class MyProgressCellEditor extends AbstractCellEditor implements TableCellEditor,ActionListener{ private JProgressBar jpb;
private Timer time;
private int maxnum;//jpb的最大值
public MyProgressCellEditor(int maxnum){
jpb=new JProgressBar();
jpb.setStringPainted(true);
jpb.setSize(20, 8);
this.maxnum=maxnum;
//jpb.setOrientation(JProgressBar.HORIZONTAL);
jpb.setMinimum(0);
jpb.setMaximum(maxnum);
jpb.setValue(10);
time=new Timer(2, this);
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
// TODO Auto-generated method stub
return jpb;
} @Override
public Object getCellEditorValue() {
return jpb.getValue();
} @Override
public void actionPerformed(ActionEvent e) {
int i=SendMail.successMail;//静态变量
jpb.setValue(i);
if(maxnum==i){
stopShow();
}
}
/**
* 启动调用
*/
public void starShow(){
time.start();
}
/**
* 停止调用
*/
public void stopShow(){
time.stop();
}
}package com.jframe;import java.awt.Component;import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;public class ProgressPanel extends JProgressBar implements TableCellRenderer{ @Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
// TODO Auto-generated method stub
return this;
}
}
上边是我写的代码,但是在加入table后没有效果,请大家帮忙!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货