java swing jtable 中加进度条

 

package progreass;

import java.awt.Color;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

import org.dyno.visual.swing.layouts.Constraints;
import org.dyno.visual.swing.layouts.GroupLayout;
import org.dyno.visual.swing.layouts.Leading;

//VS4E -- DO NOT REMOVE THIS LINE!
public class Progressss extends JFrame {

 private static final long serialVersionUID = 1L;
 private JTable jTable0;
 private JScrollPane jScrollPane0;
 private JTextField jTextField0;
 private JButton jButton0;
 private JTextArea jTextArea0;
 private JScrollPane jScrollPane1;
 private static final String PREFERRED_LOOK_AND_FEEL = "javax.swing.plaf.metal.MetalLookAndFeel";
 public Progressss() {
  initComponents();
  
  //添加进度条
  TableColumn statusColumn = jTable0.getColumnModel().getColumn(1);
  statusColumn.setCellRenderer(new ProgressCellRender());

  
  
 }

 private void initComponents() {
  setLayout(new GroupLayout());
  add(getJScrollPane0(), new Constraints(new Leading(23, 410, 10, 10), new Leading(20, 60, 10, 10)));
  add(getJTextField0(), new Constraints(new Leading(234, 86, 10, 10), new Leading(103, 12, 12)));
  add(getJButton0(), new Constraints(new Leading(341, 10, 10), new Leading(100, 12, 12)));
  add(getJScrollPane1(), new Constraints(new Leading(237, 100, 10, 10), new Leading(142, 80, 12, 12)));
  setSize(535, 240);
 }

 private JScrollPane getJScrollPane1() {
  if (jScrollPane1 == null) {
   jScrollPane1 = new JScrollPane();
   jScrollPane1.setViewportView(getJTextArea0());
  }
  return jScrollPane1;
 }

 private JTextArea getJTextArea0() {
  if (jTextArea0 == null) {
   jTextArea0 = new JTextArea();
   jTextArea0.setText("");
  }
  return jTextArea0;
 }

 private JButton getJButton0() {
  if (jButton0 == null) {
   jButton0 = new JButton();
   jButton0.setText("jButton0");
   jButton0.addMouseListener(new MouseAdapter() {
 
    public void mouseClicked(MouseEvent event) {
     jButton0MouseMouseClicked(event);
    }
   });
  }
  return jButton0;
 }

 private JTextField getJTextField0() {
  if (jTextField0 == null) {
   jTextField0 = new JTextField();
   jTextField0.setText("");
  }
  return jTextField0;
 }

 private JScrollPane getJScrollPane0() {
  if (jScrollPane0 == null) {
   jScrollPane0 = new JScrollPane();
   jScrollPane0.setViewportView(getJTable0());
  }
  return jScrollPane0;
 }

 private JTable getJTable0() {
  if (jTable0 == null) {
   jTable0 = new JTable();
   jTable0.setModel(new DefaultTableModel(new Object[][] { { "55", "66", }, { "77", "88", }, }, new String[] { "name", "pass", }) {
    private static final long serialVersionUID = 1L;
    Class<?>[] types = new Class<?>[] { Object.class, Object.class, };
 
    public Class<?> getColumnClass(int columnIndex) {
     return types[columnIndex];
    }
   });
  }
  return jTable0;
 }

 private static void installLnF() {
  try {
   String lnfClassname = PREFERRED_LOOK_AND_FEEL;
   if (lnfClassname == null)
    lnfClassname = UIManager.getCrossPlatformLookAndFeelClassName();
   UIManager.setLookAndFeel(lnfClassname);
  } catch (Exception e) {
   System.err.println("Cannot install " + PREFERRED_LOOK_AND_FEEL
     + " on this platform:" + e.getMessage());
  }
 }

 /**
  * Main entry of the class.
  * Note: This class is only created so that you can easily preview the result at runtime.
  * It is not expected to be managed by the designer.
  * You can modify it as you like.
  */
 public static void main(String[] args) {
  installLnF();
  SwingUtilities.invokeLater(new Runnable() {
   @Override
   public void run() {
    Progressss frame = new Progressss();
    frame.setDefaultCloseOperation(Progressss.EXIT_ON_CLOSE);
    frame.setTitle("Progressss");
    frame.getContentPane().setPreferredSize(frame.getSize());
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
   }
  });
 }


 
/**
 * 进度条
 */
 public class ProgressCellRender extends DefaultTableCellRenderer {
  public ProgressCellRender() {
  }

  public Component getTableCellRendererComponent(JTable table,
    Object value, boolean isSelected, boolean hasFocus, int row,
    int column) {
   this.setOpaque(true);//render是否透明
   
   JProgressBar progressBar = new JProgressBar();
   
   progressBar.setMinimum(0);
   progressBar.setMaximum(100);
   progressBar.setValue(0);
   //进度条边框线
//   progressBar.setBorder(BorderFactory.createEmptyBorder());
   progressBar.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
   progressBar.setForeground(new Color(0, 255, 128));//前景色
   progressBar.setStringPainted(true);//是否显示ToolTipText
   if (value != null) {
    int progressValue = ((Integer.valueOf(value.toString())) ).intValue();
    progressBar.setValue(progressValue);
    //设置背景色
    if (isSelected) {
     progressBar.setBackground(new Color(206, 207, 255));
    } else {
     progressBar.setBackground(Color.white);
    }
   }
   progressBar.setToolTipText(String.valueOf(progressBar.getValue())
     + "% ");
   return progressBar;
  }

 }


 private void jButton0MouseMouseClicked(MouseEvent event) {
  String vv=jTextField0.getText().trim().toString();
  if(this.isMatchesNumber(vv)){
   jTable0.getModel().setValueAt(vv, 1, 1);
   jTextArea0.setText("value--"+jTable0.getModel().getValueAt(1, 1).toString());
  }else{
   JOptionPane.showMessageDialog(null, "请输入正整数");
   jTextField0.setText("");
  }
  
 }
 //是否正整数
 public boolean isMatchesNumber(String bot){
  boolean flag=false;
  try{
   String regex="^[1-9]+\\d{0,1}$";
//   String regex="^[[1-9]{1}\\d{0,1}|[1-9]{1}[2]{0,1}]$";
   Pattern p=Pattern.compile(regex);
   Matcher m=p.matcher(bot);
   if(m.find()){
    return true;
   }
  }catch(Exception e){
   e.printStackTrace();
  }
  return flag;
 }
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值