Tip: Click lines to highlight, hold ctrl/cmd to multi-select

http://codedumper.com/inaca (21-Jul @ 13:45)

Syntax Highlighted Code

  1. package components;
  2.  
  3.    import javax.swing.*;
  4.    import javax.swing.table.TableModel;
  5.    import javax.swing.event.*;
  6.    import java.awt.Dimension;
  7.    import java.awt.event.*;
  8.    import javax.swing.table.DefaultTableColumnModel;
  9.    import javax.swing.table.AbstractTableModel;
  10.    import javax.swing.table.TableRowSorter;
  11.  
  12.    import java.awt.*;
  13. import java.util.regex.PatternSyntaxException;
  14.  
  15.    import javax.swing.JButton;
  16. import javax.swing.table.DefaultTableModel;
  17.  
  18.  
  19.    public class Tableur extends JPanel implements TableModelListener
  20.    {
  21.         public boolean filtering=false;
  22.  
  23.        public JLabel label = new JLabel("Filter");
  24.         public JButton buttonFilter = new JButton("Filter");
  25.        private Object[][] donnees;
  26.        private String[] nomsColonnes;
  27.        private JTable table;
  28.        private TableModel tableur;
  29.        private int[] vsize;
  30.        private javax.swing.JLabel jLabel1;
  31.        private javax.swing.JButton aj1,aj2;
  32.        private TableModelPerso tt;
  33.        private int ajoutsupp;
  34.        private int posilig;
  35.        private TableRowSorter<TableModel> sorter;
  36.        public JFrame monCadre;
  37.        public JTextField filterText =
  38.             new JTextField("mp3",5);
  39.      
  40.        public Tableur(TableModelPerso vtablemodelperso,int vajoutsupp)
  41.        {
  42.            tt=vtablemodelperso;
  43.            ajoutsupp=vajoutsupp;
  44.            this.setLayout(new BorderLayout());
  45.            
  46.            table = new JTable(vtablemodelperso);
  47.            table.setColumnSelectionAllowed(true);
  48.            table.setRowSelectionAllowed(true);
  49.            table.setSelectionBackground(Color.BLUE);
  50.            
  51.            //table.setPreferredScrollableViewportSize(table.getPreferredSize());
  52.            table.setRowSelectionAllowed(true);
  53.            table.setColumnSelectionAllowed(false);
  54.            table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  55.            sorter = new TableRowSorter<TableModel>(tt);
  56.            
  57.            JPanel panel2 = new JPanel();
  58.            FlowLayout flow = new FlowLayout();
  59.            flow.setAlignment(FlowLayout.TRAILING);
  60.            panel2.setLayout(flow);
  61.          
  62.            add(filterText, BorderLayout.CENTER);
  63.            
  64.            panel2.add(label);
  65.            panel2.add(filterText);
  66.             panel2.add(buttonFilter);
  67.            
  68.            JToolBar toolBar = new JToolBar();
  69.                toolBar.setFloatable(false);
  70.                toolBar.add(new AbstractAction("Insertar linea") {
  71.             public void actionPerformed(ActionEvent e) {
  72.                 sorter.setRowFilter(null);
  73.                  tt.addligne();
  74.             }
  75.         });
  76.         toolBar.add( new AbstractAction("Borrar linea") {
  77.             public void actionPerformed(ActionEvent e) {
  78.                 //sorter.setRowFilter(null);
  79.                  if (tt.getDonnees().length==0)
  80.                  {
  81.                      JOptionPane d = new JOptionPane();
  82.                      d.showMessageDialog( d.getParent(),"No linea!","Error!",JOptionPane.ERROR_MESSAGE);
  83.                  return;
  84.                 }
  85.                  
  86.                
  87.                  int test =0;
  88.                  //sorter.setRowFilter(null);
  89.                  //table.changeSelection(posilig,0,false,false);
  90.                  Integer idSup = new Integer(0);
  91.                  idSup = (Integer)table.getValueAt(table.getSelectedRow(),0);
  92.                  test = idSup.intValue();
  93.                 // int nbColumn = tt.getColumnCount();
  94.                 for (int k=0;k<tt.getRowCount();k++)
  95.                  {
  96.                     idSup = (Integer)table.getValueAt(k,0);
  97.                     if (idSup.intValue() == test)
  98.                     {
  99.                         sorter.setRowFilter(null);
  100.                         tt.suppligne(k);
  101.                     }
  102.                    
  103.                  }
  104.                
  105.                  
  106.             }
  107.         });
  108.        
  109.         //toolBar.add(theRemoveRowAction);
  110.         toolBar.add(new AbstractAction("Cancelar cambios") {
  111.             public void actionPerformed(ActionEvent e) {
  112.                 //reload();
  113.             }
  114.         });
  115.        
  116.         toolBar.add(new AbstractAction("Enviar cambios") {
  117.             public void actionPerformed(ActionEvent e) {
  118.                 //insertInBaseDatos();
  119.             }
  120.         });
  121.            
  122.            panel2.add(toolBar);
  123.          
  124.            buttonFilter.addActionListener(new ActionListener() {
  125.                  public void actionPerformed(ActionEvent e) {
  126.                      filtering = true;
  127.                    String text = filterText.getText();
  128.                    if (text.length() == 0) {
  129.                      sorter.setRowFilter(null);
  130.                    } else {
  131.                      try {
  132.                        sorter.setRowFilter(
  133.                            RowFilter.regexFilter(text));
  134.                        filtering = false;
  135.                      } catch (PatternSyntaxException pse) {
  136.                        System.err.println("Bad regex pattern");
  137.                        filtering = false;
  138.                      }
  139.                    }
  140.                  }
  141.                });
  142.  
  143.          
  144.            
  145.            
  146.            
  147.            
  148.            
  149.            table.setRowSorter(sorter);
  150.            int[] vsize=vtablemodelperso.getSizecol();
  151.            int tailletot=0;
  152.            
  153.            for (int i=0;i<vsize.length;i++)
  154.            {
  155.                table.getColumnModel().getColumn(i).setPreferredWidth(vsize[i]);
  156.                if (vsize[i]==0) {table.getColumnModel().getColumn(i).setMinWidth(vsize[i]);table.getColumnModel().getColumn(i).setMaxWidth(vsize[i]);}
  157.                tailletot=tailletot+vsize[i];
  158.            }
  159.            vtablemodelperso.addEcouteur(table);
  160.            table.setPreferredScrollableViewportSize(new Dimension(tailletot+500, 150));
  161.            JScrollPane avecAsc = new JScrollPane(table);
  162.            avecAsc.setSize(500, 500);
  163.            jLabel1 = new javax.swing.JLabel();
  164.            jLabel1.setBackground(new java.awt.Color(255, 255, 51));
  165.            jLabel1.setText("Double clic sur une colonne pour trier la table");
  166.            jLabel1.setOpaque(true);
  167.            jLabel1.setName("TITRE");
  168.            jLabel1.setPreferredSize(new java.awt.Dimension(55, 20));
  169.            aj1 = new javax.swing.JButton();
  170.            aj1.setBackground(new java.awt.Color(255, 255, 51));
  171.            aj1.setText("AƱadir linea");
  172.            aj1.setPreferredSize(new java.awt.Dimension(150, 25));
  173.            aj2 = new javax.swing.JButton();
  174.            aj2.setBackground(new java.awt.Color(255, 255, 51));
  175.            aj2.setText("Borrar linea");
  176.            aj2.setPreferredSize(new java.awt.Dimension(150, 25));
  177.            if (filtering == true)
  178.            {
  179.                aj2.setEnabled(false);
  180.            }
  181.            //add(jLabel1);
  182.            add(avecAsc,BorderLayout.CENTER);
  183.            table.addMouseListener(new java.awt.event.MouseAdapter() {
  184.                public void mouseClicked(java.awt.event.MouseEvent evt) {
  185.                    posilig=(table.rowAtPoint(evt.getPoint()));
  186.                }
  187.            });
  188.            
  189.           if (!vtablemodelperso.isTypeselection() & ajoutsupp!=0){
  190.                // add(aj1,BorderLayout.SOUTH);
  191.              aj1.addMouseListener(new java.awt.event.MouseAdapter() {
  192.                  public void mouseClicked(java.awt.event.MouseEvent evt) {
  193.                      tt.addligne();
  194.               }});
  195.              
  196.              //add(aj2,BorderLayout.SOUTH);
  197.              
  198.              aj2.addMouseListener(new java.awt.event.MouseAdapter() {
  199.                  
  200.                  public void mouseClicked(java.awt.event.MouseEvent evt) {
  201.                  if (tt.getDonnees().length==0)
  202.                  {
  203.                      JOptionPane d = new JOptionPane();
  204.                      d.showMessageDialog( d.getParent(),"No linea!","Error!",JOptionPane.ERROR_MESSAGE);
  205.                  return;
  206.                 }
  207.                  
  208.                  table.changeSelection(posilig,0,false,false);
  209.                  
  210.                  for (int k=0;k<tt.getColumnCount();k++)
  211.                  {
  212.                      table.changeSelection(posilig,k,false,true);
  213.                  }
  214.                  tt.suppligne(posilig);
  215.              }});
  216.              add(panel2,BorderLayout.NORTH);
  217.          }
  218.          }
  219.        
  220.          public void tableChanged(TableModelEvent e)
  221.          {
  222.          }
  223.          
  224.          public void affiche( JFrame j,String vtitre)
  225.          {
  226.              final JFrame v=j;
  227.             if (monCadre == null){
  228.                monCadre = new JFrame();
  229.             }
  230.              //monCadre.setSize(400, 400);
  231.              monCadre.setTitle(vtitre);
  232.              monCadre.setContentPane(this);
  233.              monCadre.addWindowListener(new WindowAdapter()
  234.              {
  235.              public void windowClosing(WindowEvent evt)
  236.              {
  237.                  //v.setVisible(false);
  238.                  }
  239.             });
  240.                  //Insets insets = monCadre.getInsets();
  241.                 monCadre.setSize(300, 300);
  242.                 // java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
  243.                 monCadre.setBounds(300, 300, 500, 300);
  244.                  monCadre.pack();
  245.                  monCadre.setVisible(true);
  246.              }
  247.            
  248.              public Point getLocation() {
  249.                  Point retValue;
  250.                  retValue = super.getLocation();
  251.                  System.out.println(retValue);
  252.                  return retValue;
  253.              }
  254.              public String[] getNomsColonnes() {
  255.          return nomsColonnes;
  256.     }
  257.  }

Plain Code

package components;

   import javax.swing.*;
   import javax.swing.table.TableModel;
   import javax.swing.event.*;
   import java.awt.Dimension;
   import java.awt.event.*;
   import javax.swing.table.DefaultTableColumnModel;
   import javax.swing.table.AbstractTableModel;
   import javax.swing.table.TableRowSorter;

   import java.awt.*;
import java.util.regex.PatternSyntaxException;

   import javax.swing.JButton;
import javax.swing.table.DefaultTableModel;
  
  
   public class Tableur extends JPanel implements TableModelListener
   {
        public boolean filtering=false;

       public JLabel label = new JLabel("Filter");
        public JButton buttonFilter = new JButton("Filter");
       private Object[][] donnees;
       private String[] nomsColonnes;
       private JTable table;
       private TableModel tableur;
       private int[] vsize;
       private javax.swing.JLabel jLabel1;
       private javax.swing.JButton aj1,aj2;
       private TableModelPerso tt;
       private int ajoutsupp;
       private int posilig;
       private TableRowSorter<TableModel> sorter;
       public JFrame monCadre;
       public JTextField filterText =
            new JTextField("mp3",5);
      
       public Tableur(TableModelPerso vtablemodelperso,int vajoutsupp)
       {
           tt=vtablemodelperso;
           ajoutsupp=vajoutsupp;
           this.setLayout(new BorderLayout());
           
           table = new JTable(vtablemodelperso);
           table.setColumnSelectionAllowed(true);
           table.setRowSelectionAllowed(true);
           table.setSelectionBackground(Color.BLUE);
           
           //table.setPreferredScrollableViewportSize(table.getPreferredSize());
           table.setRowSelectionAllowed(true);
           table.setColumnSelectionAllowed(false);
           table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
           sorter = new TableRowSorter<TableModel>(tt);
           
           JPanel panel2 = new JPanel();
           FlowLayout flow = new FlowLayout();
           flow.setAlignment(FlowLayout.TRAILING);
           panel2.setLayout(flow);
          
           add(filterText, BorderLayout.CENTER);
           
           panel2.add(label);
           panel2.add(filterText);
            panel2.add(buttonFilter);
            
           JToolBar toolBar = new JToolBar();
               toolBar.setFloatable(false);
               toolBar.add(new AbstractAction("Insertar linea") {
            public void actionPerformed(ActionEvent e) {
                sorter.setRowFilter(null);
                 tt.addligne();
            }
        });
        toolBar.add( new AbstractAction("Borrar linea") {
            public void actionPerformed(ActionEvent e) {
                //sorter.setRowFilter(null);
                 if (tt.getDonnees().length==0)
                 {
                     JOptionPane d = new JOptionPane();
                     d.showMessageDialog( d.getParent(),"No linea!","Error!",JOptionPane.ERROR_MESSAGE);
                 return;
                }
                 
                
                 int test =0;
                 //sorter.setRowFilter(null);
                 //table.changeSelection(posilig,0,false,false);
                 Integer idSup = new Integer(0);
                 idSup = (Integer)table.getValueAt(table.getSelectedRow(),0);
                 test = idSup.intValue();
                // int nbColumn = tt.getColumnCount();
                for (int k=0;k<tt.getRowCount();k++)
                 {
                    idSup = (Integer)table.getValueAt(k,0);
                    if (idSup.intValue() == test)
                    {
                        sorter.setRowFilter(null);
                        tt.suppligne(k);
                    }
                    
                 }
                
                 
            }
        });
        
        //toolBar.add(theRemoveRowAction);
        toolBar.add(new AbstractAction("Cancelar cambios") {
            public void actionPerformed(ActionEvent e) {
                //reload();
            }
        });
        
        toolBar.add(new AbstractAction("Enviar cambios") {
            public void actionPerformed(ActionEvent e) {
                //insertInBaseDatos();
            }
        });
           
           panel2.add(toolBar);
          
           buttonFilter.addActionListener(new ActionListener() {
                 public void actionPerformed(ActionEvent e) {
                     filtering = true;
                   String text = filterText.getText();
                   if (text.length() == 0) {
                     sorter.setRowFilter(null);
                   } else {
                     try {
                       sorter.setRowFilter(
                           RowFilter.regexFilter(text));
                       filtering = false;
                     } catch (PatternSyntaxException pse) {
                       System.err.println("Bad regex pattern");
                       filtering = false;
                     }
                   }
                 }
               });

         
            
           
            
           
           
           table.setRowSorter(sorter);
           int[] vsize=vtablemodelperso.getSizecol();
           int tailletot=0;
           
           for (int i=0;i<vsize.length;i++)
           {
               table.getColumnModel().getColumn(i).setPreferredWidth(vsize[i]);
               if (vsize[i]==0) {table.getColumnModel().getColumn(i).setMinWidth(vsize[i]);table.getColumnModel().getColumn(i).setMaxWidth(vsize[i]);}
               tailletot=tailletot+vsize[i];
           }
           vtablemodelperso.addEcouteur(table);
           table.setPreferredScrollableViewportSize(new Dimension(tailletot+500, 150));
           JScrollPane avecAsc = new JScrollPane(table);
           avecAsc.setSize(500, 500);
           jLabel1 = new javax.swing.JLabel();
           jLabel1.setBackground(new java.awt.Color(255, 255, 51));
           jLabel1.setText("Double clic sur une colonne pour trier la table");
           jLabel1.setOpaque(true);
           jLabel1.setName("TITRE");
           jLabel1.setPreferredSize(new java.awt.Dimension(55, 20));
           aj1 = new javax.swing.JButton();
           aj1.setBackground(new java.awt.Color(255, 255, 51));
           aj1.setText("Añadir linea");
           aj1.setPreferredSize(new java.awt.Dimension(150, 25));
           aj2 = new javax.swing.JButton();
           aj2.setBackground(new java.awt.Color(255, 255, 51));
           aj2.setText("Borrar linea");
           aj2.setPreferredSize(new java.awt.Dimension(150, 25));
           if (filtering == true)
           {
               aj2.setEnabled(false);
           }
           //add(jLabel1);
           add(avecAsc,BorderLayout.CENTER);
           table.addMouseListener(new java.awt.event.MouseAdapter() {
               public void mouseClicked(java.awt.event.MouseEvent evt) {
                   posilig=(table.rowAtPoint(evt.getPoint()));
               }
           });
           
          if (!vtablemodelperso.isTypeselection() & ajoutsupp!=0){
               // add(aj1,BorderLayout.SOUTH);
             aj1.addMouseListener(new java.awt.event.MouseAdapter() {
                 public void mouseClicked(java.awt.event.MouseEvent evt) {
                     tt.addligne();
              }});
             
             //add(aj2,BorderLayout.SOUTH);
             
             aj2.addMouseListener(new java.awt.event.MouseAdapter() {
                 
                 public void mouseClicked(java.awt.event.MouseEvent evt) {
                 if (tt.getDonnees().length==0)
                 {
                     JOptionPane d = new JOptionPane();
                     d.showMessageDialog( d.getParent(),"No linea!","Error!",JOptionPane.ERROR_MESSAGE);
                 return;
                }
                 
                 table.changeSelection(posilig,0,false,false);
                 
                 for (int k=0;k<tt.getColumnCount();k++)
                 {
                     table.changeSelection(posilig,k,false,true);
                 }
                 tt.suppligne(posilig);
             }});
             add(panel2,BorderLayout.NORTH);
         }
         }
       
         public void tableChanged(TableModelEvent e)
         {
         }
         
         public void affiche( JFrame j,String vtitre)
         {
             final JFrame v=j;
            if (monCadre == null){
               monCadre = new JFrame();
            }
             //monCadre.setSize(400, 400);
             monCadre.setTitle(vtitre);
             monCadre.setContentPane(this);
             monCadre.addWindowListener(new WindowAdapter()
             {
             public void windowClosing(WindowEvent evt)
             {
                 //v.setVisible(false);
                 }
            });
                 //Insets insets = monCadre.getInsets();
                monCadre.setSize(300, 300);
                // java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
                monCadre.setBounds(300, 300, 500, 300);
                 monCadre.pack();
                 monCadre.setVisible(true);
             }
            
             public Point getLocation() {
                 Point retValue;
                 retValue = super.getLocation();
                 System.out.println(retValue);
                 return retValue;
             }
             public String[] getNomsColonnes() {
         return nomsColonnes;
    }
 } 

Permalink: http://codedumper.com/inaca