Prob:Tabelle bei Zellensprung: Letzte zeile doppelt sichtbar

Status
Nicht offen für weitere Antworten.

anquijix

Mitglied
Hallo

Ich hab da ein sinnfreies Problem zu beheben.. Ich hab eine Tabelle (SearchPane), deren Zellen (TableCell), je nach Resultat der Datenbank, editierbar werden oder eine bestimmte Farbe erhalten.
Weiter hat es einen CellEditingListener (abgeleitet von AbstractCellEditingListener), der auf Enter reagiert und in die nächste fokussier- und editierbare Zelle springt und bei neuen Einträgen gleich noch eine DB-Prozedur aufruft, die die Daten abspeichert.

Nun habe ich einen Fall, in dem ich von einer editierbaren Zelle irgendwo in der Mitte in die letzte Zelle springen kann, sprich die Zelle in der letzten Zeile. Wenn ich jetzt das Fenster soweit verkleinere, dass der Fensterrand knapp unter der letzten Zeile ist und dann von der Zelle in der Mitte zur letzten Zelle springen möchte, dann sehe ich plötzlich die letzte Zeile doppelt, bzw leicht verschoben über sich selbst.
Die erste Zeile der Tabelle ist dann im Nirwana verschwunden. Anders ausgedrückt wurde die ganze Tabelle um eine Zeile nach oben "verschoben", was die erste Zeile verdeckte.

Wenn ich nun mit der Maus aus dem Fenster gehe bzw. wieder rein, dann wird die Tabelle wieder korrekt angezeigt. Daher kam ich zum Schluss, dass es irgendwie nicht richtig reloaded wird oder sowas in der Richtung. Darauf habe ich versucht, diverse Methoden auf das SearchPane anzuwenden. z.B. repaint(), revalidate(), updateUI().. einfach alles, was irgend einen Bezug zum Zeichnen der Tabelle haben könnte.
Das Problem tritt jedoch in jedem Fall auf.

Hier noch mit Screenshot erläutert:

Ich befinde mich in der Zelle im mittleren Bereich:

52dwo69.jpg


Nun möchte ich mit Enter in die unterste Zelle springen, folgender Effekt:

5ywzdya.jpg


Lässt sich das vermeiden? Wenn ja, wie am besten?



p.s ich zähle mich nach ca 2.5 jahren immer noch zu den blutigsten anfängern..
 

wayne

Bekanntes Mitglied
ich hatte auch schon einige male so ein problem, wobei's bei mir immer daran lag, daß ich den zeilen etwas zu wenig platz (in vertikaler richtung) gegeben hatte. ob das bei dir das problem ist, kann ich jetzt auch nicht sagen, aber ich empfehl dir, es mal auszuprobieren, sprich, von deinem JTable mal die methode setRowHeights(...) mit einem etwas größeren wert aufzurufen. vielleicht erschlägt es ja das problem, denn sonst würd ich (mit meinen über 6 jahren java-erfahrung) auch auf dem schlauch stehen.

vorsichtshalber drück ich dir gleich mal die daumen, daß es daran liegt :wink:

wayne
 

André Uhres

Top Contributor
Ich hab's versucht nachzuvollziehen, funktioniert aber:
Code:
package table;
/*
 * CellJumpDemo.java
 */
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class CellJumpDemo extends JFrame {
    private JTable table;
    private DefaultTableModel model;
    Color color1 = new Color(204, 204, 204);
    Color color2 = new Color(253, 255, 152);
    public CellJumpDemo() {
        super("CellJumpDemo");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        model = new DefaultTableModel(20, 3) {
            public Class getColumnClass(final int columnIndex) {
                if(columnIndex == 1) return Integer.class;
                return String.class;
            }
        };
        for (int i = 0; i < model.getRowCount(); i++){
            model.setValueAt(""+(i+1), i, 0);
            model.setValueAt("0", i, 1);
        }
        table = new JTable(model){
            public Component prepareRenderer(final TableCellRenderer renderer, 
                    final int row, final int column) {
                Component c = super.prepareRenderer(renderer, row, column);
                c.setBackground(Color.WHITE);
                if(column == 2){
                    c.setBackground(color1);
                }
                if(column == 1){
                    c.setBackground(color2);
                }
                return c;
            }
        };
        getContentPane().add(new JScrollPane(table), BorderLayout.EAST);
        CellEditorListener cel = new CellEditorListener() {
            public void editingStopped(final ChangeEvent e) {
                int row = table.getRowCount()-1;
                int column = 1;
                table.changeSelection(row, column, false, false);
                table.editCellAt(row, column);
                JTextField tf = (JTextField)table.getEditorComponent();
                tf.requestFocusInWindow();
                tf.selectAll();
            }
            public void editingCanceled(final ChangeEvent e) {}
        };
        table.getDefaultEditor(Integer.class).addCellEditorListener(cel);
        pack();
    }
    public static void main(final String args[]) {new CellJumpDemo().setVisible(true);}
}
 

anquijix

Mitglied
Haha, das funzt mit dem setRowHeight. Danke dir!
Auch wenn ich das Problem dadurch trotzdem nicht erklären kann, wie so vieles bei Java.. vllt in ein paar Jahren
 

anquijix

Mitglied
André Uhres hat gesagt.:
anquijix hat gesagt.:
..Auch wenn ich das Problem dadurch trotzdem nicht erklären kann..
Bau doch bitte mal den Fehler in mein obiges Beispiel ein, dann kommen wir der Sache wohl näher :wink:

Da habe ich keinen Plan... Mir wurde dieses grössere Java-Projekt fast vollständig übergeben, da unser erfahrener Java-Guru, der das Ganze im Alleingang aufgesetzt hat, nicht mehr hier arbeitet. Keine Ahnung, welcher Code fehlerhaft ist, geschweige denn wo ich den finden würde. Ist alles über mehrere Files verteilt. Ich bin schon froh, wenn ich die richtige Codestelle finde, um ein Problem beheben zu können.

Ich bin nicht einmal fähig, dein Beispiel zu starten.

habs compiliert mit javac und dann mit java gestartet:

Code:
Exception in thread "main" java.lang.NoClassDefFoundError: CellJumpDemo (wrong name: table/CellJumpDemo)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
 

André Uhres

Top Contributor
anquijix hat gesagt.:
..
Code:
Exception in thread "main" java.lang.NoClassDefFoundError: CellJumpDemo (wrong name: table/CellJumpDemo)
Das ist wahrscheinlich nur ne Kleinigkeit :wink:
Nimm erstmal das "package" statement raus und versuch's nochmal.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Gentle KeyListener + ActionListener + AdjustmentListener -> Prob AWT, Swing, JavaFX & SWT 8
S JColorChooser Prob mit Ok/Abbr. AWT, Swing, JavaFX & SWT 3
M Prob. beim dynamischen Erzeugen v. Obj! AWT, Swing, JavaFX & SWT 11
X wieder mal ein prob mit dnd AWT, Swing, JavaFX & SWT 14
S JFrame prob unter linux AWT, Swing, JavaFX & SWT 4
G Prob mit 2 Klassen und set Methode AWT, Swing, JavaFX & SWT 6
G Prob mit JTable AWT, Swing, JavaFX & SWT 4
O Prob, wenn JTree einem JScrollPane hinzufüge! AWT, Swing, JavaFX & SWT 2
G Graphics (g) und JComponent prob. AWT, Swing, JavaFX & SWT 2
B prob mit abgeleitetem JButton AWT, Swing, JavaFX & SWT 3
W Kleine Sub-Tabelle in SpreadsheetView-Zelle anzeigen AWT, Swing, JavaFX & SWT 9
K Tabelle zu Datenbank hinzufügen / Apache Derby AWT, Swing, JavaFX & SWT 7
izoards JavaFX editierbare Tabelle AWT, Swing, JavaFX & SWT 4
HoT Sortieren von ein paar Zeilen in einer Tabelle, aber nicht die ganze Tabelle AWT, Swing, JavaFX & SWT 3
H Tabelle in JFrame einfügen AWT, Swing, JavaFX & SWT 1
T Zelle- und die Zeile-Farbenwechsel bei der Selektion in der Tabelle AWT, Swing, JavaFX & SWT 4
T Anbinden der Tabelle an die Daten AWT, Swing, JavaFX & SWT 5
ralfb1105 JavaFX TreeView dynamisch aus Datenbank Tabelle erstellen AWT, Swing, JavaFX & SWT 22
F JavaFX Tabelle mit Daten füllen AWT, Swing, JavaFX & SWT 9
kodela Swing Letzte Änderung in der Tabelle wird nicht gespeichert AWT, Swing, JavaFX & SWT 5
W JavaFX Tabelle zeilenweise mit Werten füllen und an Container anpassen AWT, Swing, JavaFX & SWT 23
F JavaFX Tabelle mit gespeicherten Eingabe Werten AWT, Swing, JavaFX & SWT 8
adiko01 JTable: Nur markierte Zeilen aus der Tabelle in CSV exportiern AWT, Swing, JavaFX & SWT 9
B Zeile einer Tabelle selektieren AWT, Swing, JavaFX & SWT 1
A Swing Tabelle wird bei Betätigung des Button nicht befüllt AWT, Swing, JavaFX & SWT 17
L Dynamischer Aufbau einer Tabelle über Objekte AWT, Swing, JavaFX & SWT 2
B Swing Tabelle(JTable) filtern swing GUI AWT, Swing, JavaFX & SWT 3
D Swing JScrollPane Tabelle ändern (2 Tabellen) AWT, Swing, JavaFX & SWT 7
MrSnake Tabelle nach 2 Strings Filtern AWT, Swing, JavaFX & SWT 3
D Filter in Tabelle Sql AWT, Swing, JavaFX & SWT 6
M JavaFX Tabelle flexibler Länge AWT, Swing, JavaFX & SWT 3
T Swing Tabelle mit Button - Anzeigefehler nach Zeile entfernen AWT, Swing, JavaFX & SWT 1
JavaMachtMichFertig JavaFX Gui - Löschbutton in Tabelle anzeigen, die mittels MySQL Abfrage gefüllt wird AWT, Swing, JavaFX & SWT 5
D Swing Breite einer HTML Tabelle in einer JTextPane AWT, Swing, JavaFX & SWT 6
J JavaFX Tabelle soll ganze Seite ausfüllen AWT, Swing, JavaFX & SWT 2
M ausgewählte Inhalt von ListItem inn ComboBox in der Tabelle speichern AWT, Swing, JavaFX & SWT 0
D Swing Eigene Tabelle AWT, Swing, JavaFX & SWT 18
M Filter in die JFace/SWT Tabelle einbauen AWT, Swing, JavaFX & SWT 5
T SWT Mysql Tabelle zeigt immer nur den ersten Wert immer wieder an AWT, Swing, JavaFX & SWT 3
J JavaFX eine Art Tabelle, jedoch mit mehreren Zeilen AWT, Swing, JavaFX & SWT 2
P Swing Klick in Tabelle nicht möglich AWT, Swing, JavaFX & SWT 0
Thallius Swing Tabelle nach Datumsspalte sortieren AWT, Swing, JavaFX & SWT 4
F JavaFX Daten aus Tabelle in ComboBox AWT, Swing, JavaFX & SWT 9
E Tabelle zeigt nicht neuste Datenbankeinträge an AWT, Swing, JavaFX & SWT 5
F SWT Problem mit Tabelle und Combobox in einem Wizard AWT, Swing, JavaFX & SWT 5
D Swing JTable- Meine Tabelle der Klasse JTable wird nur bedingt angezeigt AWT, Swing, JavaFX & SWT 4
O Tabelle "animiert" Scrollen AWT, Swing, JavaFX & SWT 1
R Int aus JSpinner auslesen und Tabelle erstellen AWT, Swing, JavaFX & SWT 3
G JavaFX ComboBoxTableCell für Zuordnung in Tabelle AWT, Swing, JavaFX & SWT 2
B Probleme bei Sortierung einer Tabelle mit DefaultTableModel AWT, Swing, JavaFX & SWT 6
L Tabelle reagiert ungewollt auf Mausklick AWT, Swing, JavaFX & SWT 6
C Verschiebbare "Buttons" in einer Tabelle AWT, Swing, JavaFX & SWT 3
S Swing Tabelle mit Model bei eingeschaltetem Filter synchronisieren AWT, Swing, JavaFX & SWT 6
P Listener Auswahl Tabelle AWT, Swing, JavaFX & SWT 6
B LayoutManager Tabelle repainten AWT, Swing, JavaFX & SWT 4
K Swing JTable Text im Hintergrund einer leeren Tabelle AWT, Swing, JavaFX & SWT 3
H JScrollPane - JEditorPane und HTML-Tabelle AWT, Swing, JavaFX & SWT 2
F Elementbezeichnung in der Tabelle AWT, Swing, JavaFX & SWT 7
F Tabelle sortieren AWT, Swing, JavaFX & SWT 3
F SWT Tabelle Zeile auslesen AWT, Swing, JavaFX & SWT 3
T Spaltennamen jeweils der angezeigten Tabelle anpassen AWT, Swing, JavaFX & SWT 19
S JTable Filter nach Wort oder Wortteil über ganze Tabelle AWT, Swing, JavaFX & SWT 5
L Fehler beim erstellen einer Tabelle mithilfe von 2d-Array AWT, Swing, JavaFX & SWT 3
T Swing JScrollPane- und Tabelle-Header Problem AWT, Swing, JavaFX & SWT 25
B Tabelle anpassen AWT, Swing, JavaFX & SWT 6
N jComboBox mit eigenem Renderer und eigenem Datentyp als Rückgabe in einer Tabelle AWT, Swing, JavaFX & SWT 2
N Button akivieren, wenn Tabelle verändert worden ist AWT, Swing, JavaFX & SWT 2
C SWT refresh einer Tabelle AWT, Swing, JavaFX & SWT 4
X Tabelle während Funktionsaufruf aktualisieren AWT, Swing, JavaFX & SWT 11
C SWT Tabelle mit Werten befüllen AWT, Swing, JavaFX & SWT 5
Y LayoutManager Keine vollständige Darstellung der Tabelle mit GridBagLayout AWT, Swing, JavaFX & SWT 3
S Tabelle sortieren, mit Ausnahme der letzten Zeile AWT, Swing, JavaFX & SWT 9
H SWT RAP Anwendung - Tabelle - Theming AWT, Swing, JavaFX & SWT 3
_dp Swing ScrollPane unterschlägt Großteil der Tabelle AWT, Swing, JavaFX & SWT 7
_dp Swing Tabelle: Ausklappbare Einträge AWT, Swing, JavaFX & SWT 2
C Swing Inhalt einer JTable aktualisieren und filten nach Feldern die nicht in der Tabelle sind AWT, Swing, JavaFX & SWT 3
S Tabelle im selben Formular anzeigen AWT, Swing, JavaFX & SWT 6
D Zwei String Attribute über eine Methode als Zeilen in einer Tabelle darstellen AWT, Swing, JavaFX & SWT 9
M Im Frame wird nur die Menüleiste erstellt und nicht die Tabelle? AWT, Swing, JavaFX & SWT 3
A SWT Tabelle (elegant) sortieren AWT, Swing, JavaFX & SWT 2
D Scrollbar für Tabelle AWT, Swing, JavaFX & SWT 2
A Button in Tabelle ansprechen AWT, Swing, JavaFX & SWT 6
O Tabelle laden - Prozessorlast 100% ?? AWT, Swing, JavaFX & SWT 11
F Tabelle und Bildindex (Thumbnails) AWT, Swing, JavaFX & SWT 4
A SWT Tabelle Sortieren AWT, Swing, JavaFX & SWT 3
H Swing Tabelle nach Klick auf Button mit Daten füllen? AWT, Swing, JavaFX & SWT 2
Airwolf89 Swing Exception beim Füllen einer Tabelle AWT, Swing, JavaFX & SWT 10
D Swing Tabelle sortieren AWT, Swing, JavaFX & SWT 4
B tabelle mit labeln AWT, Swing, JavaFX & SWT 2
M sortierbare Tabelle mit jface und databinding AWT, Swing, JavaFX & SWT 3
H ArrayList?! in Tabelle AWT, Swing, JavaFX & SWT 3
Milady Annzeigen alle Daten aus der Tabelle AWT, Swing, JavaFX & SWT 6
D SWT String aus Textfeld auslesen und in eine Tabelle speichern AWT, Swing, JavaFX & SWT 5
Ollek JTable - Tabelle füllen mit einer ArrayList AWT, Swing, JavaFX & SWT 22
E Daten aus sortierter Tabelle lesen AWT, Swing, JavaFX & SWT 2
T Swing Java Darstellung einer Tabelle AWT, Swing, JavaFX & SWT 3
FoolMoon Swing JCheckBox neben Text in einer Tabelle AWT, Swing, JavaFX & SWT 2
K Strings aus jTextArea in Liste oder Tabelle übertragen- wie? AWT, Swing, JavaFX & SWT 4
H Swing Saubere Erstellung einer Tabelle AWT, Swing, JavaFX & SWT 3
O Tabelle über Event sortieren AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben