Inhalt in JTable suchen

Status
Nicht offen für weitere Antworten.
I

IDE

Gast
hallo!

Ich schreibe Daten von einer MySql Datenbank in ein JTable. es soll auch eine suchfunktion geben. wie suche ich jetzt nach einem bestimmten wort in einem jtable und makiere dann die zeile, in der sich das wort befindet?
die tabelle wurde mit dem netbeans gui builder erstellt:

Code:
jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null, null}
            },
            new String [] {
                "Nummer", "Nachname", "Vorname", "PLZ", "Ort", "Strasse", "Telefon", "E-Mail", "Altersgruppe", "Bankeverbindung", "Sonstiges"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false, false, false, false, false, false
            };

danke im voraus!
 
G

Guest

Gast
tschuldigung. hab da noch was im code vergessen. gehört einfach hinten dran:

Code:
    public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
 

André Uhres

Top Contributor
Code:
/*
 * Suche.java
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class Suche extends JFrame {
    public Suche() {
        super("Suche");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(500,600);
        setLocationRelativeTo(null);
        //JComponents erzeugen:
        toolbar = new JToolBar();
        suchFeld = new JTextField("test12345");
        suchBtn = new JButton("Suche");
        jTable1 = new JTable();
        //Layout:
        getRootPane().setDefaultButton(suchBtn);
        toolbar.add(suchFeld);
        toolbar.add(suchBtn);
        getContentPane().add(toolbar, BorderLayout.NORTH);
        jTable1.setModel(new DefaultTableModel(
                new Object [][] {
        },
                new String [] {
            "Title 1", "Title 2", "Title 3"
        }
        ));
        model = (DefaultTableModel)jTable1.getModel();
        getContentPane().add(new JScrollPane(jTable1), BorderLayout.CENTER);
        fuelle();
        //Listener:
        suchBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                suchBtnActionPerformed(evt);
            }
        });
    }
    private void suchBtnActionPerformed(ActionEvent evt) {
        such(suchFeld.getText().trim());
    }
    private void such(String string) {
        String str = "";
        for (int i = 0; i < jTable1.getRowCount(); i++) {
            str = jTable1.getValueAt(i,0).toString();
            if(str.equalsIgnoreCase(string)){
                jTable1.changeSelection(i,0,false,false);
            }
        }
    }
    public static void main(String args[]) { new Suche().setVisible(true); }
    private void fuelle(){
        for (int i = 0; i < 50000; i++) model.addRow(new Object[]{"test"+i});
    }
    private DefaultTableModel model ;
    private JTable jTable1;
    private JButton suchBtn;
    private JTextField suchFeld;
    private JToolBar toolbar;
}
 
G

Guest

Gast
das funktioniert jetzt auch super.

nur wenn ich jetzt mehrmals einen eintrag habe, dann springt es immer nur zum letzten. gibt es da eine möglichkeit alle diese felder zu makieren?
 

André Uhres

Top Contributor
Nach changeSelection "break;" einfügen, dann stoppt er beim ersten Treffer.
Die Suchaktion beginnst du immer erst hinter der selektierten Zeile --> jTable1.getSelectedRow()+1.
Wenn der Zeilenindex grösser als (jTable1.getRowCount()-1) ist, dann beginnst du die Suche bei 0.
 
G

Guest

Gast
ich hab den code jetzt ein wenig umgeändert. leider bekomme ich, seit dem ich java 6 beta installiert habe eine java.lang.ArrayIndexOutOfBoundsException: -1.

Früher hats funktioniert, aber ich bin mir nicht ganz sicher ob ich vorher was verändert habe.


Code:
    private void such() 
    {
        int x = -1;
        int y = -1;
        String str = "";

        try
        {
            for (int i = 0; i <= jTable1.getRowCount(); i++) 
            {
                for(int j = 0; j <= jTable1.getColumnCount(); j++) // -1
                {
                    str = jTable1.getValueAt(i,y).toString();
                    if( str.equalsIgnoreCase( jTextField1.getText() ) )
                    {
                        x = i;
                        y = j;
                    }   
                }
            } 
            if(x == -1 && y == -1) {
                javax.swing.JOptionPane.showMessageDialog(null,"Eintrag nicht gefunden",
                            "Nicht gefunden",javax.swing.JOptionPane.ERROR_MESSAGE);
            } else {
                jTable1.changeSelection(x,y,false,false);
                
            } 
        } catch(Exception e) { 
             System.out.println("Fehler: " + e);
        } 
    }

danke im voraus!
 

André Uhres

Top Contributor
Code:
   private void such() {
        boolean gefunden = false;
        String str = "";
        int i = jTable1.getSelectedRow()+1;
        for (; i < jTable1.getRowCount(); i++) {
            for (int j = 0; j < jTable1.getColumnCount(); j++) {
                str = jTable1.getValueAt(i,j)==null?"":jTable1.getValueAt(i,j).toString();
                if(str.startsWith(jTextField1.getText().trim())){
                    jTable1.changeSelection(i,j,false,false);
                    gefunden = true;
                    break;
                }
            }
            if(gefunden) break;
        }
        if(!gefunden) {
            JOptionPane.showMessageDialog(null,"Eintrag nicht gefunden",
                    "Nicht gefunden",JOptionPane.ERROR_MESSAGE);
            jTable1.clearSelection();
        }
    }
 
G

Guest

Gast
Danke, es gibt aber irgendwie trotzdem ein problem.

Wenn ich das zweite mal was suchen will, oder einen nichtbestehenden Eintrag suche, dann bekomme ich wieder eine java.lang.NullPointerException

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at GUIH.such(GUIH.java:1356)
at GUIH.jButton7ActionPerformed(GUIH.java:1081)
at GUIH.access$1000(GUIH.java:11)
at GUIH$11.actionPerformed(GUIH.java:370)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1957)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2278)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:377)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:232)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5955)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3285)
at java.awt.Component.processEvent(Component.java:5720)
at java.awt.Container.processEvent(Container.java:1960)
at java.awt.Component.dispatchEventImpl(Component.java:4365)
at java.awt.Container.dispatchEventImpl(Container.java:2018)
at java.awt.Component.dispatchEvent(Component.java:4195)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4222)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3886)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3816)
at java.awt.Container.dispatchEventImpl(Container.java:2004)
at java.awt.Window.dispatchEventImpl(Window.java:2210)
at java.awt.Component.dispatchEvent(Component.java:4195)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)


Zeile 1356:
str = jTable1.getValueAt(i,j).toString();

danke im voraus.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Swing JTable mit Inhalt aus XML-File AWT, Swing, JavaFX & SWT 3
I JTable Spalten automatisch dem Inhalt anpassen! AWT, Swing, JavaFX & SWT 6
0 JTable Spaltenbreite automatisch an Inhalt anpassne geht nicht AWT, Swing, JavaFX & SWT 3
N Fehler Inhalt von JTable wird gelöscht AWT, Swing, JavaFX & SWT 5
X Swing JTable stets mit gleichem Inhalt öffnen AWT, Swing, JavaFX & SWT 3
O JTable mit Inhalt drucken AWT, Swing, JavaFX & SWT 3
C Swing Inhalt einer JTable aktualisieren und filten nach Feldern die nicht in der Tabelle sind AWT, Swing, JavaFX & SWT 3
C Swing JTable zeigt in jeder Zelle einer Reihe denselben Inhalt AWT, Swing, JavaFX & SWT 2
R JTable Hintergrund der Zeile abhängig von Inhalt einer Zelle verändern AWT, Swing, JavaFX & SWT 3
S Inhalt einer JTable kopieren? (GlazedLists) AWT, Swing, JavaFX & SWT 2
D Inhalt einer JTable Celle auslesen AWT, Swing, JavaFX & SWT 3
G Inhalt von JTable mittig anordnen AWT, Swing, JavaFX & SWT 6
M Probleme mit JTable und DB-Inhalt AWT, Swing, JavaFX & SWT 6
Z Column Breite in JTable automatisch an Inhalt anpassen AWT, Swing, JavaFX & SWT 3
L Inhalt von ausgewählte Spalten aus JTable abfragen AWT, Swing, JavaFX & SWT 4
N Textfelder = Inhalt vorhanden && Jtable rendern AWT, Swing, JavaFX & SWT 8
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1
Fragerjava Frame inhalt komplett löschen AWT, Swing, JavaFX & SWT 4
_user_q Wie den Inhalt vom Spinner auf Integer überprüfen? AWT, Swing, JavaFX & SWT 15
izoards JavaFX TableView mit Array Inhalt füllen AWT, Swing, JavaFX & SWT 1
B Batik: Inhalt JComponent to SVG? AWT, Swing, JavaFX & SWT 6
B JavaFX TableView-Zellen sollen automatisch so groß wie der größte Inhalt sein AWT, Swing, JavaFX & SWT 6
B JavaFX TextInputDialog: Focus auf Eingabefeldinhalt setzen und nach OK Inhalt leeren AWT, Swing, JavaFX & SWT 5
H JTabel Inhalt löschen AWT, Swing, JavaFX & SWT 1
L JDialog hat manchmal keinen Inhalt AWT, Swing, JavaFX & SWT 2
A Swing Datei lässt sich zwar speichern, aber nicht laden (Inhalt im JTextField anzeigen) AWT, Swing, JavaFX & SWT 18
ZH1896ZH JavaFX Wie kann ich die Fenstergrösse entsprechend dem Inhalt vergrössern/verkleinern AWT, Swing, JavaFX & SWT 2
K JavaFX Component Größe an Inhalt anpassen AWT, Swing, JavaFX & SWT 11
L JavaFX Pane inklusive Inhalt der Bildschirm Auflösung anpassen AWT, Swing, JavaFX & SWT 13
Hatsi09 JTextArea Inhalt verlinken AWT, Swing, JavaFX & SWT 4
L JPanel zeigt keinen Inhalt AWT, Swing, JavaFX & SWT 1
A Inhalt wechseln bei Klick auf Label AWT, Swing, JavaFX & SWT 8
C JTextField Inhalt mit Maus selektieren wenn disabled AWT, Swing, JavaFX & SWT 2
C JavaFX ProGuard -> TableView kein Inhalt AWT, Swing, JavaFX & SWT 7
D Inhalt von JTextField in MySQL speichern. Wie ? AWT, Swing, JavaFX & SWT 1
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
MaxG. JavaFX Inhalt in Tableview wird nicht angezeigt AWT, Swing, JavaFX & SWT 11
T [Neuling] Textfeld Inhalt überprüfen und falsche Stellen als msg Ausgeben AWT, Swing, JavaFX & SWT 1
Kanda Sorata Inhalt einer .txt Datei einlesen und in ein Label einfügen (JavaFX) AWT, Swing, JavaFX & SWT 2
gamillton Swing JComboBox mit extra Inhalt + breiteres Popupmenü AWT, Swing, JavaFX & SWT 0
M Swing Inhalt meines JTables wird falsch dargestellt AWT, Swing, JavaFX & SWT 8
P TreeView automatisch an große von Inhalt anpassen AWT, Swing, JavaFX & SWT 3
U Swing Inhalt vom Fenster wird erst durch Hovern oder Klicken sichtbar AWT, Swing, JavaFX & SWT 3
G Menübar anklicken und Inhalt entsprechend wechseln AWT, Swing, JavaFX & SWT 4
A Nach klick auf Button neuen Inhalt im gleichen Fenster AWT, Swing, JavaFX & SWT 3
Z Swing Frame wird geöffnet, aber ist ohne Inhalt AWT, Swing, JavaFX & SWT 0
A JavaFX Von Klasse auf Controller Inhalt zugreifen AWT, Swing, JavaFX & SWT 9
V JScrollBar soll weiterscrollen, wenn Inhalt von JTextArea erweitert wird AWT, Swing, JavaFX & SWT 7
K Swing Inhalt eines JPanels lesen AWT, Swing, JavaFX & SWT 3
Tausendsassa Frame öffnet aber zeigt keinen Inhalt... AWT, Swing, JavaFX & SWT 10
A BorderLayout "Center" Inhalt wechseln AWT, Swing, JavaFX & SWT 1
A JFace/SWT: ListViewer Inhalt nach Selection in zweitem List Viewer aktualisieren! AWT, Swing, JavaFX & SWT 5
S Swing Nur den sichtbaren Bereich eines TextPane mit Inhalt darstellem AWT, Swing, JavaFX & SWT 0
E JavaFX JavaFX - MenuItem erstellen aus dem Inhalt einer HashMap AWT, Swing, JavaFX & SWT 1
Z JavaFX Inhalt einer ViewTable durch Aktion einer Menubar ändern welche in einer anderen fxml ist AWT, Swing, JavaFX & SWT 4
M ausgewählte Inhalt von ListItem inn ComboBox in der Tabelle speichern AWT, Swing, JavaFX & SWT 0
E JavaFX Sehr viel und unterschiedlich Großen Inhalt auf einer "Fläche" ... Umsetzbar ? AWT, Swing, JavaFX & SWT 3
D 2D-Grafik Inhalt eines Graphics in anderes Graphics zeichnen.... AWT, Swing, JavaFX & SWT 3
JAVAnnik JavaFX Inhalt der TreeCell nicht einrücken AWT, Swing, JavaFX & SWT 1
F AWT Drucken verschluckt inhalt AWT, Swing, JavaFX & SWT 1
S Inhalt der Java-Konsole in die JTextArea AWT, Swing, JavaFX & SWT 3
TheJavaKid JTextField: Reine Domain herausfiltern, sonst Inhalt löschen AWT, Swing, JavaFX & SWT 1
A Swing JLabel/JTextField Inhalt mit JSlider verändern AWT, Swing, JavaFX & SWT 12
OnDemand Inhalt des Frames ändern AWT, Swing, JavaFX & SWT 4
S SWT TableCell mit Composite als Inhalt / Höhe der Cell/Row AWT, Swing, JavaFX & SWT 5
3 Swing JList-Inhalt als verschlüsselte Datei schreiben und lesen AWT, Swing, JavaFX & SWT 1
C Swing Anzeigeproblem mit TableModels abhängig von deren Inhalt AWT, Swing, JavaFX & SWT 10
H Swing JScrollPane mit "viel Inhalt" scrollt zu langsam (inkl. See-For-Yourself.jar :D) AWT, Swing, JavaFX & SWT 2
P Swing Dialog zeigt keinen Inhalt in Verbindung mit JFrame AWT, Swing, JavaFX & SWT 18
M EditorPane Inhalt anders als er soll! AWT, Swing, JavaFX & SWT 2
S Swing JFormattedTextField - bei nicht korrekter Eingabe Inhalt überschreiben AWT, Swing, JavaFX & SWT 5
S Swing JFormattedTextfield markiert nicht gesamten Inhalt AWT, Swing, JavaFX & SWT 4
A 2D-Grafik Panel inhalt löschen AWT, Swing, JavaFX & SWT 5
H JCombobox inhalt löschen AWT, Swing, JavaFX & SWT 17
N Swing JCombobox - PopupMenu-Inhalt mit KSKB AWT, Swing, JavaFX & SWT 2
N Swing KomponentenHöhe an html-Inhalt anpassen AWT, Swing, JavaFX & SWT 4
S Inhalt einer JComboBox aktualisieren AWT, Swing, JavaFX & SWT 6
Nicklas2751 Table View zeigt keinen Inhalt nur leere Zeilen AWT, Swing, JavaFX & SWT 2
A JComboBox-Inhalt durch neues Array ersetzen AWT, Swing, JavaFX & SWT 2
D LayoutManager JScrollPane mit dynamischem Inhalt AWT, Swing, JavaFX & SWT 8
C SWT Wie greife ich auf den Inhalt einer bestimmten Zeile zu? (TableViewer) AWT, Swing, JavaFX & SWT 7
H JFrame Inhalt neu aufbauen? AWT, Swing, JavaFX & SWT 8
M Beim Start von TableEditor Inhalt der Zelle markieren. AWT, Swing, JavaFX & SWT 2
T Inhalt von einem Tab an JTabbedPane größe ausrichten? AWT, Swing, JavaFX & SWT 2
TheWhiteShadow JList-Inhalt nach Änderung weg AWT, Swing, JavaFX & SWT 3
P Swing JScrollPane-Inhalt: Grösse anpassen AWT, Swing, JavaFX & SWT 6
0 JFrame zeigt Inhalt erst nach vergrößern an AWT, Swing, JavaFX & SWT 3
P AWT Wie kann mein listener den Inhalt eines anderen Textfelds ändern? AWT, Swing, JavaFX & SWT 10
L JFrame an Paint-Inhalt anpassen AWT, Swing, JavaFX & SWT 6
A Swing JScrollPane zeigt keinerlei Inhalt an AWT, Swing, JavaFX & SWT 2
H Swing JPanel Inhalt wird bei verwenden von JPopup gelöscht AWT, Swing, JavaFX & SWT 5
C SWT Textfeld mit festem und variablen Inhalt AWT, Swing, JavaFX & SWT 13
L Inhalt einer table löschen AWT, Swing, JavaFX & SWT 2
lumo SWT ScrolledComposite maximierter inhalt AWT, Swing, JavaFX & SWT 2
K Tabellen Inhalt ( Zelle ) Modifizieren AWT, Swing, JavaFX & SWT 2
H Swing HTML in einem JEditorPane zeilenweise hinzufügen ohne Inhalt jedes Mal neu zu laden AWT, Swing, JavaFX & SWT 4
D Transparentes JFrame mit inhalt AWT, Swing, JavaFX & SWT 7
S Swing JTabbedPane: Inhalt soll oben links anfangen AWT, Swing, JavaFX & SWT 6
O Swing Inhalt des JFrames wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
0 2D-Grafik Screenshot von ScrollBar-Inhalt AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben