JTable Filtern / Suchen

Alles was mit Swing und AWT zu tun hat

Moderatoren: wegus, Olek77

Antworten
birtprofi
Beiträge: 21
Registriert: 29.08.2012, 08:15

JTable Filtern / Suchen

Beitrag von birtprofi » 23.10.2012, 07:25

Hallo zusammen,

habe mit den NetBeans GUI Builder mir jetzt ein JTable gebaut. Jetzt würde ich die Ergebnisse gerne Filtern.
Und zwar entweder nach dem Feld "Name" oder wenn möglich, kann auch über alle Columns (Name, Hersteller etc.) gefiltert werden.

Hierfür habe ich schon mal ein JTextField hinzugefügt, es lautet "Suche".

Jetzt würde ich gerne mein JTable aktualisieren/filtern, sobald ich beginne, im Feld Suche etwas einzugeben. Könnt Ihr mir bitte zeigen, wie ich das mit dem Gui-Builder bewerkstelligen kann, bzw. welchen Code ich dazu hinterlegen muss.
Habe mir folgendes Beispiel angesehen: http://docs.oracle.com/javase/tutorial/ ... ml#sorting
Komme aber leider mit meinen Anfängerkenntnissen noch nicht wirklich weiter.

Anbei mein jetziger Code:

Code: Alles auswählen

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package java_gui;
package model;

import java.awt.EventQueue;
import java.beans.Beans;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.RollbackException;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 *
 * @author User
 */
public class NewMasterDetailForm extends JPanel {
    
    public NewMasterDetailForm() {
        initComponents();
        if (!Beans.isDesignTime()) {
            entityManager.getTransaction().begin();
        }
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {
        bindingGroup = new org.jdesktop.beansbinding.BindingGroup();

        entityManager = java.beans.Beans.isDesignTime() ? null : javax.persistence.Persistence.createEntityManagerFactory("Java_GUIPU").createEntityManager();
        query = java.beans.Beans.isDesignTime() ? null : entityManager.createQuery("SELECT p FROM Produkt p");
        list = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : org.jdesktop.observablecollections.ObservableCollections.observableList(query.getResultList());
        masterScrollPane = new javax.swing.JScrollPane();
        masterTable = new javax.swing.JTable();
        nameLabel = new javax.swing.JLabel();
        herstellerLabel = new javax.swing.JLabel();
        artikelnummerLabel = new javax.swing.JLabel();
        statusLabel = new javax.swing.JLabel();
        nameField = new javax.swing.JTextField();
        herstellerField = new javax.swing.JTextField();
        artikelnummerField = new javax.swing.JTextField();
        statusField = new javax.swing.JTextField();
        saveButton = new javax.swing.JButton();
        refreshButton = new javax.swing.JButton();
        newButton = new javax.swing.JButton();
        deleteButton = new javax.swing.JButton();
        jCheckBox1 = new javax.swing.JCheckBox();
        Suche = new javax.swing.JTextField();

        FormListener formListener = new FormListener();

        masterTable.setAutoCreateRowSorter(true);
        masterTable.setToolTipText("");

        org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, list, masterTable);
        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${name}"));
        columnBinding.setColumnName("Name");
        columnBinding.setColumnClass(String.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${hersteller}"));
        columnBinding.setColumnName("Hersteller");
        columnBinding.setColumnClass(String.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${artikelnummer}"));
        columnBinding.setColumnName("Artikelnummer");
        columnBinding.setColumnClass(String.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${status}"));
        columnBinding.setColumnName("Status");
        columnBinding.setColumnClass(Boolean.class);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${status}"));
        columnBinding.setColumnName("test");
        columnBinding.setColumnClass(Boolean.class);
        bindingGroup.addBinding(jTableBinding);
        jTableBinding.bind();
        masterScrollPane.setViewportView(masterTable);

        nameLabel.setText("Name:");

        herstellerLabel.setText("Hersteller:");

        artikelnummerLabel.setText("Artikelnummer:");

        statusLabel.setText("Status:");

        org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.name}"), nameField, org.jdesktop.beansbinding.BeanProperty.create("text"));
        binding.setSourceUnreadableValue(null);
        bindingGroup.addBinding(binding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), nameField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
        bindingGroup.addBinding(binding);

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.hersteller}"), herstellerField, org.jdesktop.beansbinding.BeanProperty.create("text"));
        binding.setSourceUnreadableValue(null);
        bindingGroup.addBinding(binding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), herstellerField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
        bindingGroup.addBinding(binding);

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.artikelnummer}"), artikelnummerField, org.jdesktop.beansbinding.BeanProperty.create("text"));
        binding.setSourceUnreadableValue(null);
        bindingGroup.addBinding(binding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), artikelnummerField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
        bindingGroup.addBinding(binding);

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.status}"), statusField, org.jdesktop.beansbinding.BeanProperty.create("text"));
        binding.setSourceUnreadableValue(null);
        bindingGroup.addBinding(binding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), statusField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
        bindingGroup.addBinding(binding);

        saveButton.setText("Save");
        saveButton.addActionListener(formListener);

        refreshButton.setText("Refresh");
        refreshButton.addActionListener(formListener);

        newButton.setText("New");
        newButton.addActionListener(formListener);

        deleteButton.setText("Delete");

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), deleteButton, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
        bindingGroup.addBinding(binding);

        deleteButton.addActionListener(formListener);

        jCheckBox1.setText("jCheckBox1");

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.status}"), jCheckBox1, org.jdesktop.beansbinding.BeanProperty.create("selected"), "");
        bindingGroup.addBinding(binding);

        Suche.addActionListener(formListener);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(newButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(deleteButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(refreshButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(saveButton))
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(masterScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(nameLabel)
                                    .addComponent(herstellerLabel)
                                    .addComponent(artikelnummerLabel)
                                    .addComponent(statusLabel))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(jCheckBox1)
                                        .addGap(0, 0, Short.MAX_VALUE))
                                    .addComponent(nameField, javax.swing.GroupLayout.DEFAULT_SIZE, 337, Short.MAX_VALUE)
                                    .addComponent(herstellerField, javax.swing.GroupLayout.DEFAULT_SIZE, 337, Short.MAX_VALUE)
                                    .addComponent(artikelnummerField, javax.swing.GroupLayout.DEFAULT_SIZE, 337, Short.MAX_VALUE)
                                    .addComponent(statusField, javax.swing.GroupLayout.DEFAULT_SIZE, 337, Short.MAX_VALUE))))))
                .addContainerGap())
            .addGroup(layout.createSequentialGroup()
                .addGap(96, 96, 96)
                .addComponent(Suche, javax.swing.GroupLayout.PREFERRED_SIZE, 131, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {deleteButton, newButton, refreshButton, saveButton});

        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(Suche, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(5, 5, 5)
                .addComponent(masterScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 50, Short.MAX_VALUE)
                .addComponent(jCheckBox1)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(nameLabel)
                    .addComponent(nameField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(herstellerLabel)
                    .addComponent(herstellerField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(artikelnummerLabel)
                    .addComponent(artikelnummerField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(statusLabel)
                    .addComponent(statusField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(saveButton)
                    .addComponent(refreshButton)
                    .addComponent(deleteButton)
                    .addComponent(newButton))
                .addContainerGap())
        );

        bindingGroup.bind();
    }

    // Code for dispatching events from components to event handlers.

    private class FormListener implements java.awt.event.ActionListener {
        FormListener() {}
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            if (evt.getSource() == saveButton) {
                NewMasterDetailForm.this.saveButtonActionPerformed(evt);
            }
            else if (evt.getSource() == refreshButton) {
                NewMasterDetailForm.this.refreshButtonActionPerformed(evt);
            }
            else if (evt.getSource() == newButton) {
                NewMasterDetailForm.this.newButtonActionPerformed(evt);
            }
            else if (evt.getSource() == deleteButton) {
                NewMasterDetailForm.this.deleteButtonActionPerformed(evt);
            }
            else if (evt.getSource() == Suche) {
                NewMasterDetailForm.this.SucheActionPerformed(evt);
            }
        }
    }// </editor-fold>

    

    @SuppressWarnings("unchecked")
    private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) {                                              
        entityManager.getTransaction().rollback();
        entityManager.getTransaction().begin();
        java.util.Collection data = query.getResultList();
        for (Object entity : data) {
            entityManager.refresh(entity);
        }
        list.clear();
        list.addAll(data);
    }                                             
    
    private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             
        int[] selected = masterTable.getSelectedRows();
        List<model.Produkt> toRemove = new ArrayList<model.Produkt>(selected.length);
        for (int idx = 0; idx < selected.length; idx++) {
            model.Produkt p = list.get(masterTable.convertRowIndexToModel(selected[idx]));
            toRemove.add(p);
            entityManager.remove(p);
        }
        list.removeAll(toRemove);        
    }                                            
    
    private void newButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          
        model.Produkt p = new model.Produkt();
        entityManager.persist(p);
        list.add(p);
        int row = list.size() - 1;
        masterTable.setRowSelectionInterval(row, row);
        masterTable.scrollRectToVisible(masterTable.getCellRect(row, 0, true));
    }                                         
    
    private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
        try {
            entityManager.getTransaction().commit();
            entityManager.getTransaction().begin();
        } catch (RollbackException rex) {
            rex.printStackTrace();
            entityManager.getTransaction().begin();
            List<model.Produkt> merged = new ArrayList<model.Produkt>(list.size());
            for (model.Produkt p : list) {
                merged.add(entityManager.merge(p));
            }
            list.clear();
            list.addAll(merged);
        }
    }                                          

    private void SucheActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }

    // Variables declaration - do not modify
    private javax.swing.JTextField Suche;
    private javax.swing.JTextField artikelnummerField;
    private javax.swing.JLabel artikelnummerLabel;
    private javax.swing.JButton deleteButton;
    private javax.persistence.EntityManager entityManager;
    private javax.swing.JTextField herstellerField;
    private javax.swing.JLabel herstellerLabel;
    private javax.swing.JCheckBox jCheckBox1;
    private java.util.List<model.Produkt> list;
    private javax.swing.JScrollPane masterScrollPane;
    private javax.swing.JTable masterTable;
    private javax.swing.JTextField nameField;
    private javax.swing.JLabel nameLabel;
    private javax.swing.JButton newButton;
    private javax.persistence.Query query;
    private javax.swing.JButton refreshButton;
    private javax.swing.JButton saveButton;
    private javax.swing.JTextField statusField;
    private javax.swing.JLabel statusLabel;
    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    // End of variables declaration
    public static void main(String[] args) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(NewMasterDetailForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(NewMasterDetailForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(NewMasterDetailForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(NewMasterDetailForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new JFrame();
                frame.setContentPane(new NewMasterDetailForm());
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}
Danke schon mal im Voraus :!:

Benutzeravatar
smurfi
Site Admin
Beiträge: 1639
Registriert: 29.06.2006, 11:33
Wohnort: Wuppertal
Kontaktdaten:

Re: JTable Filtern / Suchen

Beitrag von smurfi » 23.10.2012, 08:05

Hallo,

es gibt da was von Oracle http://docs.oracle.com/javase/tutorial/ ... table.html unter dem Punkt 'Sorting and Filtering'.

Gruß
Michael

big_fish
Beiträge: 123
Registriert: 21.07.2006, 15:37
Wohnort: Nürnberg
Kontaktdaten:

Re: JTable Filtern / Suchen

Beitrag von big_fish » 23.10.2012, 09:12

Hallo zusammen,

Ich verwende JXTable von SwingLabs. Ist eine Erweiterung von JTable.

http://swingx.java.net/

Die jar - Datei findet man zum Beispiel hier:

http://www.jarvana.com/jarvana/browse/o ... ngx/1.6.1/

MfG
big_fish

Benutzeravatar
Olek77
Beiträge: 669
Registriert: 21.03.2009, 13:09

Re: JTable Filtern / Suchen

Beitrag von Olek77 » 23.10.2012, 13:41

Hi,

SwingX ist super. Kann ich nur jedem empfehlen, der sich anspruchsvoller
mit UI beschäftigen will.

Sind zwar leider unterbesetzt aber es gibt sehr viel gute/sinnvolle neue Klassen.
Dazu ein riesen Fundus an "Custom Painting"-Support. Man kann
praktisch alles mit sog. Decorators aufhübschen.

Die Kalender sind auch sehr gut.

Viele Grüße,

Olek
- Netbeans Certified Associate -

birtprofi
Beiträge: 21
Registriert: 29.08.2012, 08:15

Re: JTable Filtern / Suchen

Beitrag von birtprofi » 24.10.2012, 06:33

Guten Morgen,

habe zum Thema JTable filtern eine sehr gute und einfache Vorgenhensweise gefunden. (wenn man den Netbeans Editor verwendet)
Siehe: https://blogs.oracle.com/JavaFundamenta ... _to_search

habe allerdings eine Frage: Bei mir hat folgende Codezeile des converters nicht funktioniert

Code: Alles auswählen

sorter.setRowFilter(RowFilter.regexFilter(".\*" + sb + ".\*"));
habe es mit dieser Zeile ersetzt (also eigentlich nur die \ entfernt)

Code: Alles auswählen

sorter.setRowFilter(RowFilter.regexFilter(".*" + sb + ".*"));
Könnt ihr mir dies kurz erklären, was "\" bedeuten würde?
danke.

Benutzeravatar
nigjo
Beiträge: 632
Registriert: 08.09.2009, 09:43
Wohnort: Aachen
Kontaktdaten:

Re: JTable Filtern / Suchen

Beitrag von nigjo » 24.10.2012, 08:50

birtprofi hat geschrieben:Könnt ihr mir dies kurz erklären, was "\" bedeuten würde?
In Regulären Ausdrücken wird das "\" als "Maskierungszeichen" verwendet. Näheres dazu auch in den JavaDocs zu java.util.regex.Pattern.

".\*" bedeutet du suchst nach einem einzigen (beliebigen) Zeichen dem ein "*" folgt. ".*" bedeutet, dass du beliebig viele Zeichen (egal welche) suchst.

Jens
Man sollte seine Werkzeuge kennen. Ansonsten haut man sich mit dem Hammer nur auf die Finger.

--
NetBeans Certified Engineer - Java Getriebe

birtprofi
Beiträge: 21
Registriert: 29.08.2012, 08:15

Re: JTable Filtern / Suchen

Beitrag von birtprofi » 24.10.2012, 10:26

danke :P

Ute-die-Gute
Beiträge: 2
Registriert: 12.12.2012, 12:22

Re: JTable Filtern / Suchen

Beitrag von Ute-die-Gute » 12.12.2012, 12:31

nigjo hat geschrieben:
birtprofi hat geschrieben:Könnt ihr mir dies kurz erklären, was "\" bedeuten würde?
In Regulären Ausdrücken wird das "\" als "Maskierungszeichen" verwendet. Näheres dazu auch in den JavaDocs zu java.util.regex.Pattern.

".\*" bedeutet du suchst nach einem einzigen (beliebigen) Zeichen dem ein "*" folgt. ".*" bedeutet, dass du beliebig viele Zeichen (egal welche) suchst.

Jens
Sehr schön erläutert. Ich bedanke mich ebenfalls. Ich habe mich schon gefragt, wie man nach beliebig vielen Zeichen sucht.

Antworten