JTable suchen in einer Spalte

Status
Nicht offen für weitere Antworten.

PollerJava

Top Contributor
Hallo,

ich habe eine JTable mit 100 Zeilen und möchte in einer Spaltesuchen, ob schon ein gewisser Eintrag vorhanden ist, wenn nicht, dann möchte ich den Eintrag ganz oben einfügen und die unteren Einträge sollen sich eben um eins nach unten verschieben,

auch möchte ich Zeilen Löschen können und die Lücke sollte von den unteren Einträgen ausgefüllt werden,

ist da irgendwie einfach zu realisieren?

Wäre sehr dankbar für ein paar Tipps,

lg


Code:
tableList[x] = new JTable(TableModel, columnModel);
 
S

SlaterB

Gast
idealaerweise hast du ein TableModel,
in welchem die Daten in einer List oder Array vorliegen,
die Suche beschränkt sich dann auf die Suche in dieser Liste,
falls die JTable keine andere Reihenfolge (z.B. durch Sortierung) hat

dann noch Zeile aus der Liste entfernen,
irgendein fireTableXY(); und fertig

--------

wie siehst denn in der Realität mit dem TableModel und deinen Kenntnissen darüber aus?
 

PollerJava

Top Contributor
Mein TableModel schaut so aus:
Also in data sind alle meine daten drinnen

das mit dem fireTableXY(); versteh ich jetzt nicht, wird wohl ein Observer sein der die Tabelle auf den neuesten stand bringt, oder??


Code:
import java.util.*;
 import javax.swing.*;
 import javax.swing.table.*;
 
 public class TableModel extends AbstractTableModel
    {
    private int sizeRow;
    private int sizeCol;
    private Hashtable data;
 
    public TableModel(int sizeRow, int sizeCol)
        {
        this.sizeRow = sizeRow;
        this.sizeCol = sizeCol;
        this.data = new Hashtable();
        }
    
    public TableModel(int size)
        {
        this.sizeRow = sizeRow;
        this.data = new Hashtable();
        }
 
    public int getRowCount()
        {
        return sizeRow;
        }
 
    public int getColumnCount()
        {
        return sizeCol;
        }
 
    public String getColumnName(int columnIndex)
        {
        return "C" + columnIndex;
        }
 
    public Class getColumnClass(int columnIndex)
        {
        return String.class;
        }
 
    public boolean isCellEditable(int rowIndex, int columnIndex)
        {
        return rowIndex < sizeRow && columnIndex < sizeCol;
        }
 
    public Object getValueAt(int rowIndex, int columnIndex)
        {
        String key = "[" + rowIndex + "," + columnIndex + "]";
        String value = (String)data.get(key);
        return value == null ? "-" : value;
        }
 
   public void setValueAt(Object aValue, int rowIndex, int columnIndex)
        {
        String key = "[" + rowIndex + "," + columnIndex + "]";
        String value = (String)aValue;
        if (value.length() <= 0) 
            {
            data.remove(key);
            } 
        else 
            {
            data.put(key, value);
            }
        }
}
 
S

SlaterB

Gast
hat das einen einen Sinn, dass du da eine Hashtable benutzt?
mit einer Liste von Listen/ Array wäre dein Zugriff schneller und die Suche einfacher
 

PollerJava

Top Contributor
Nö, ist aus dem Java- Handbuch,

Wie meinst Du eine Liste von Listen??? -> Zeile und Spalten also ein 2 dim ListenFeld??
 
S

SlaterB

Gast
wenn du 2 Dim hast, dann sind die Elemente darin einzelne Felder,
Object[][] z.B.

oder dynamischer: eine Zeile ist eine Liste von Objekte,
die Tabelle eine Liste von Zeilen,
also Liste von Listen von Objekten
 

PollerJava

Top Contributor
und wie Definiere ich sowas:

List<List<Integer>> dataList = new List<List<Integer>>(); ????


und wie schreib ich dann in diese List hinein?


jetzt schreib ich ja in die HashTable so:

Code:
public void setValueAt(Object aValue, int rowIndex, int columnIndex)
        {
        String key = "[" + rowIndex + "," + columnIndex + "]";
        String value = (String)aValue;
        if (value.length() <= 0) 
            {
            data.remove(key);
            } 
        else 
            {
            data.put(key, value);
            }
        }
 
S

SlaterB

Gast
List<Integer> zeile = dataList.get(rowIndex);
zeile.put(columnIndex,value);

natürlich musst du die Listen vorher ausreichend groß anlegen und befüllen
(sizeRow, sizeCol)

und mit null-Werten hast du es nicht so leicht, da musst du schon explizit null in die liste schreiben
 

PollerJava

Top Contributor
Nö, das kappier ich nicht, ich dachte mir, Listen erweitern sich autom..

stimmt das von mir oben und wie passt das mit deinen Zeilen zusammen??

Code:
List<Integer> zeile = dataList.get(rowIndex);
zeile.put(columnIndex,value);

PS: bei einer List gibts ja nur add(), oder ??
 

PollerJava

Top Contributor
bei der Zeile happerts noch, sonst ist mir alles klar, Du hast die JTable gemeint und nicht die List, alles klar


Code:
zeile.put(columnIndex,value);   // put geht nicht, add auch nicht, wie bekomme ich mein eWerte in die List

Vielen Dank!!!

lg
 
S

SlaterB

Gast
set heißt das,
wenn du natürlich von Listen wenig weißt, dann ist das ein gefährlicher Weg ;)
 

André Uhres

Top Contributor
Code:
package table;
/*
 * SpaltenSucheDemo.java
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class SpaltenSucheDemo extends JFrame implements ActionListener{
    private JButton btLoesche, btSuche;
    private JTable tabelle;
    private JToolBar toolbar;
    private DefaultTableModel model;
    public SpaltenSucheDemo() {
        tabelle = new JTable();
        toolbar = new JToolBar();
        btSuche = new JButton("Suche");
        btLoesche = new JButton("Loesche");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        tabelle.setModel(new DefaultTableModel(
                new Object [][] {
                    {"1", "A", "a", "zwei"},
                    {"2", "B", "a", "zwei"},
                    {"3", "B", "c", "drei"},
                    {"3", "D", "d", "vier"}
        },
                new String [] {"Title 1", "Title 2", "Title 3", "Title 4"}
        ) {
            Class[] types = new Class [] {String.class, String.class, String.class, String.class};
            public Class getColumnClass(int columnIndex) {return types [columnIndex];}
        });
        model = (DefaultTableModel)tabelle.getModel();
        tabelle.setCellSelectionEnabled(true);
        getContentPane().add(new JScrollPane(tabelle), BorderLayout.CENTER);
        btSuche.addActionListener(this);
        toolbar.add(btSuche);
        btLoesche.addActionListener(this);
        toolbar.add(btLoesche);
        getContentPane().add(toolbar, BorderLayout.NORTH);
        pack();
    }
    private void suche() {
        int selRow = tabelle.getSelectedRow();
        int selCol = tabelle.getSelectedColumn();
        if(selRow < 0) return;
        String val = model.getValueAt(selRow, selCol).toString();
        int row;
        for (row = 0; row < model.getRowCount(); row++) {
            if(row != selRow && model.getValueAt(row, selCol).toString().equals(val))
                break;
        }
        if(row == tabelle.getRowCount())
            model.moveRow(selRow, selRow, 0);
    }
    private void loesche() {
        int row = tabelle.getSelectedRow();
        if(row > -1)
            model.removeRow(row);
    }
    public static void main(final String args[]) {new SpaltenSucheDemo().setVisible(true);}
    
    public void actionPerformed(final ActionEvent e) {
        Object source = e.getSource();
        if(source == btSuche)suche();
        else loesche();
    }
}
 
S

SlaterB

Gast
set gibts übrigens nicht bei List, sondern nur bei ArrayList,
ich poste eben nur 'trocken', kann nicht alle Details beachten ;)
 

PollerJava

Top Contributor
Vielen dank Andre und SlaterB,

eine Frage hätte ich noch, wie kann ich bei meinem TableModel oben eine Methode implementieren, die mir eine Zeile löscht??

Steh momentan voll auf dem Schlauch,

Wäre sehr dankbar dafür,

lg
 
S

SlaterB

Gast
in der Map alle Elemente der Zeile löschen und alle weiteren mit neuen verringerten Index speichern ( :shock: )
in der Liste wie anfangs schon geschrieben,
im Zweifel fireTableDataChanged(), gibt aber vielleicht noch etwas genauere Operationen,
bei dir sicherlich auch noch rowSize und andere redundante Daten aktualisieren

im Beispiel von Andre siehe DefaultTableModel, API!
(fireTableRowsDeleted kann man da auch nachlesen)
 

PollerJava

Top Contributor
ich bekomme folgende Fehlermeldung:


Code:
Fehler hier: java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
Fehler hier: java.lang.ArrayIndexOutOfBoundsException: 5 >= 0
Fehler hier: java.lang.ArrayIndexOutOfBoundsException: 6 >= 0

wenn ich folgendes schreibe:

Code:
MyTableModelListen model = (MyTableModelListen) tableList[xSeite].getModel();
                                           
                            model.removeRow(i);

MyTableModelListen schaut so aus:

Code:
 public class MyTableModelListen extends DefaultTableModel
 
S

SlaterB

Gast
hängt wahrscheinlich davon ab, wie die Klasse MyTableModelListen aussieht..

klingt jedenfalls danach, als hättest du keine Zeilen angelegt,
wenn du in einer int-Variablen 5 Zeilen vorgibst, dann müssen auch soviele Zeilen da sein,

in der Map war es in der Hinsicht einfacher, auch eine leere Map stellte da eine beliebig große Tabelle dar
 
S

SlaterB

Gast
die hatte damals eine Hashtable, da frage ich mich, wo du eine ArrayIndexOutOfBoundsException bekommst..
 

PollerJava

Top Contributor
Habs so weit so gut geschafft,

Mein Problem ist jetzt, dass ich ja immer wieder mal eine Zeile lösche und mir dann irgendwann die Zeilen ausgehen, ich müsste also meine Zeile löschen (die die ich löschen möchte) und ganz unten eine leere Zeile wieder hinzufügen, damit es gleich bleibt,

Ist das möglich bzw. wie??


lg und herzlichen Dank für Eure hinlfreichen Antworten,
 
S

SlaterB

Gast
immer diese halben Fragen..

wenn du dich auf ein DefaultTableModel beziehst: ja, siehe API

wenn du dich auf dein eigenens Model mit Map oder List oder was auch immer (verrätst du ja nie) beziehst:
ja, schreibe dir eine passende Operation und dann siehe API von ArrayList oder was auch immer..
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
KeTho1712 Java Swing: JTable standardmäßig füllen, sodass bei Start bereits Datensätze gespeichert sind Allgemeine Java-Themen 1
H Swing JTextArea als TableCellRenderer in JTable - wie Zeilen selektieren? Allgemeine Java-Themen 47
D JTable mit JTextAreas in den Zellen Allgemeine Java-Themen 8
X Swing JTable zeigt nichts Allgemeine Java-Themen 4
G jTable aktualisieren?! Allgemeine Java-Themen 1
S JTable - mehrere ausgewählte Rows in ArrayList Allgemeine Java-Themen 5
A Fehler beim Aktualisieren JTable Allgemeine Java-Themen 1
D falsche Zeile aus JTable in MySQL gelöscht Allgemeine Java-Themen 6
offi Drag and Drop mehrerer File aus Explorer in JTable Allgemeine Java-Themen 1
V JTable Externe Lib Allgemeine Java-Themen 2
F JTable Pfeiltasten-Verhalten Allgemeine Java-Themen 1
T jTable Gestaffelte Überschriften Allgemeine Java-Themen 22
Paul15 2D Arraylist in Jtable Allgemeine Java-Themen 1
R jTable, nur Werte zwischen 2 Double values ausgeben Allgemeine Java-Themen 3
B Klassen JTable mit einer Liste Allgemeine Java-Themen 0
A JTable Bilder Allgemeine Java-Themen 1
F JTable mit Zellen die sich durch andere Eingaben füllen Allgemeine Java-Themen 1
A JTable - CellRange auslesen Allgemeine Java-Themen 2
A jTable Renderer Allgemeine Java-Themen 5
N JTable filtern Allgemeine Java-Themen 3
hdi JTable#print & Druckgröße Allgemeine Java-Themen 6
S JTable: Model durch ein anderes ersetzen Allgemeine Java-Themen 2
G JTable: ListSelectionListener removen Allgemeine Java-Themen 8
M JTable + ArrayList Allgemeine Java-Themen 3
G Aktualisierung einer JTable erfolgt nicht zuverlässig Allgemeine Java-Themen 14
E Hintergrund einer JTable änden Allgemeine Java-Themen 2
G Darstellung von Ergebnissen einer Dokumentensuche über eine JTable Allgemeine Java-Themen 19
Iron Monkey Inhalt von JTable in die Textdatei mit StringWidth schreiben Allgemeine Java-Themen 3
P jTable getSelectedRow? Allgemeine Java-Themen 2
B JTable eigene Daten Add Methode Allgemeine Java-Themen 2
B LEERE JTable MouseListener + popupmenu Allgemeine Java-Themen 2
X xml aus Zip in JTable Allgemeine Java-Themen 2
L jTable drag & drop einzelner Zeilen Allgemeine Java-Themen 4
S JTable und Spalten löschen Frage Allgemeine Java-Themen 5
H JTable per iText in PDF: Größenanpassung möglich? Allgemeine Java-Themen 2
F XML zu JTable mit JDOM Allgemeine Java-Themen 2
E JTable wird nicht angezeigt Allgemeine Java-Themen 11
Screen ImageIcon in Cell der JTable Allgemeine Java-Themen 2
G JTable mit Keylistener geht nicht Allgemeine Java-Themen 3
C Swing JTable Vector aus DB adden Allgemeine Java-Themen 3
A Swing JTable Polymorphismus Allgemeine Java-Themen 2
trash super + JTable Allgemeine Java-Themen 7
D JTable -> 1Spalte nur zahlen Allgemeine Java-Themen 2
L JTABLE setvalueat methode! Allgemeine Java-Themen 16
C Swing Daten zwischen JTable teilen Allgemeine Java-Themen 6
hdi JTable: Sortierung von Date-Objekten Allgemeine Java-Themen 4
B JTable nach Icon sortieren Allgemeine Java-Themen 6
N Exception beim auslesen einer JTable Allgemeine Java-Themen 5
M jdesktop binding: jTable update nach Änderung... Allgemeine Java-Themen 3
D JTable mit GROUP BY Allgemeine Java-Themen 23
martin82 Regex - JTable - Filter Allgemeine Java-Themen 10
X JTable mit Checkboxen -> Setzen (true/false) der Checkboxen per Mouseklick... Allgemeine Java-Themen 3
P JTable drucken Allgemeine Java-Themen 8
A JTable Feldwerte in JTextFelder mit blättern Allgemeine Java-Themen 5
DStrohma [Erledigt] Wieso kann ich Taste 'ENTER' in JTable nicht belegen? Allgemeine Java-Themen 2
M jTable Allgemeine Java-Themen 19
D jTable und TableModel Allgemeine Java-Themen 2
B Exception bei leerem JTable verhindern Allgemeine Java-Themen 10
A Observable BeansBinding an einer JTable bzw. JXTable Allgemeine Java-Themen 3
P Textfile -> Array -> JTable Allgemeine Java-Themen 9
S JTable Aktuelisieren ber Wie ? Allgemeine Java-Themen 4
MQue JComboBox in JTable Allgemeine Java-Themen 4
J Ergebnismenge eines SQL-Queries in JTable anzeigen Allgemeine Java-Themen 3
MQue JTable alles rechts Allgemeine Java-Themen 8
G Checkboxen abfragen,Auswahl sichern, JTable laden Allgemeine Java-Themen 2
G Hibernate, JTable und Performance Allgemeine Java-Themen 17
R JTable und Cell Renderer Allgemeine Java-Themen 3
M JTable: Anzahl Zeichen bei Eingabe Allgemeine Java-Themen 2
S Welche Speicherung von Daten bei Kalendarfunktion der jtable Allgemeine Java-Themen 7
J keylistener auf jtable Allgemeine Java-Themen 19
C JTable, Abstand zwischen Zellen Allgemeine Java-Themen 2
G Eindeutiges Identifizieren einer JTable/Component z.laufzeit Allgemeine Java-Themen 2
D JTable -> ArrayIndexOutOfBoundsException bei Mausklick Allgemeine Java-Themen 2
S JTable editieren + in JTextField schreiben Allgemeine Java-Themen 7
G Daten in / für JTable beim Scrollen nachladen? Allgemeine Java-Themen 5
M JTable verändert Position auf meinem JPanel Allgemeine Java-Themen 3
P JTable Allgemeine Java-Themen 2
H JTable Löschen [Alle Zeilen aufeinmal Löschen] Allgemeine Java-Themen 6
P JTable setDataVector Allgemeine Java-Themen 2
D Scrollbalken in meiner JTable auf einmal weg. Allgemeine Java-Themen 2
P JTable Allgemeine Java-Themen 8
P JButtons mit JTable verknüpfen Allgemeine Java-Themen 16
G fehler bei JTable mit JDK1.6 Allgemeine Java-Themen 4
M CheckBox in JTable - ich verzweifle gleich Allgemeine Java-Themen 2
P JTable/Vector Allgemeine Java-Themen 5
P JTable Allgemeine Java-Themen 4
E JButton bleibt in der JTable Allgemeine Java-Themen 2
E JButton in einer Zelle von JTable Allgemeine Java-Themen 16
P JTable selektierte Zeile mitwandern Allgemeine Java-Themen 2
F Checkbox in JTable , eigener Cellrenderer -wie gehts weiter? Allgemeine Java-Themen 2
G JTable wird nicht richtig aufgebaut Allgemeine Java-Themen 9
C Ausdrucken einer JTable in eine Datei mit Erhalt des Formats Allgemeine Java-Themen 3
W Columns austauschen/verschieben von jtable Allgemeine Java-Themen 3
P 3rd party JTable libraries (freeware/opensource) Allgemeine Java-Themen 19
D JTable aus Eclipse Ok, kompeliert aber nicht Allgemeine Java-Themen 6
G mySQL und JTable Allgemeine Java-Themen 7
D JTable und Buttons Allgemeine Java-Themen 16
B JScrollPane in einer JTable aktualisieren? Allgemeine Java-Themen 9
G CheckBox in JTable Allgemeine Java-Themen 3
S JTable erzeugen und updaten Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben