Ich möchte benutzerdefinierte Zelle in JTable erstellen. Ich habe einen benutzerdefinierten Renderer verwendet und ein JPanel-Objekt zurückgegeben. Es funktioniert, aber es gibt ein Problem. Während das Programm ausgeführt wird, greift das JPanel mit der Methode paintComponent() auf sich selbst zurück. Auf jedem "Tick" (normalerweise alle 100ms) wird das Panel breiter (I m drawing kind of graph) and when it becomes too big the rest is just hidden. I
) Ich mag es, Scrollbar zu skalieren und ScrollPane zu erstellen, aber keiner von ihnen hat funktioniert. Im Grunde möchte ich etwas wie Thread-Ansicht in Java VisualVM.Jede Ideen?Scrollbare JPanel in JTable Zelle
Antwort
Es ist harte Arbeit, Scroll-Fenster in eine normale Tabellenzelle zu setzen, da nur eine Komponente verwendet wird, um alle Zellen in Tabelle zu rendern.May kann JTable entfernen und nur große Menge von Komponenten in gewöhnlichen JPanel mit Gitter Layout
Wenn Sie noch JTable verwenden:.
Jedes Bildlauffenster spezielle JViewport Steuerung enthalten Diese JViewport Kontrolle über Scrollen eigentlich alle wo rk und JSrollPane selbst nur mit Bildlaufleisten. Da ein einzelnes Ansichtsfenster für alle Zellen verwendet wird, müssen Sie diese Ansichtsfensterposition speichern und für jede Malzelle (bei getCellRenderer-Methode) wiederherstellen. Aber JSrollPane benötigt viel Layout, also diese sehr langsame Lösung.
Am meisten vorzuziehen Lösung: überschreiben Sie JPane CellRenderer Paint-Methode, und diese Paint-Methode muss Untergrafiken (Graphics.create()) mit ordnungsgemäßem Scroll-Offset erstellen. Scroll-Offset-Daten müssen irgendwo gespeichert werden (z. B. im Tabellenmodell). Wenn der Benutzer auf Zelle klickt, beginnt JTable mit der Zellbearbeitung und installiert den Zelleditor. Dies muss ein spezieller Zelleneditor sein, der das Scrollfenster selbst enthält. Benutzer scroll dieses Steuerelement (keine spezielle Unterstützung erforderlich) und ging er Zellbearbeitung beendet müssen Sie Bildlaufposition zu Modell (in stopCellEditing() -Funktion) speichern. Dann zelle gerenderte Farbe selbst und in der Farbmethode erhalten Inhalt Scroll-Offset vom Modell. Benutzer sieht gescrollte Zelle. Sie können JScrollBar auch in die gerenderte Zelle einfügen, damit der Benutzer die Bildlaufposition sehen kann (aber er benötigt spezielle Unterstützung). Sie können auch JViewport selbst verwenden, um alle Schmerz-Arbeit zu tun, aber in Kontrolle schwer zu verstehen. Ich sehe keine Probleme mit Scroll-Hose in Zelle-Editor verwenden, so muss es funktionieren. In jedem Fall ist es eine riesige Arbeit.
Sie haben also einen benutzerdefinierten Tabellenzellen-Renderer eingerichtet, und ich nehme an, dass dieser Renderer eine JScrollPane
Ansicht auf einem JPanel
ist. Möglicherweise müssen Sie mit den Aufrufen von setPreferredSize()
im Bildlauffenster und Aufrufen von setPreferredSize()
und/oder setSize()
auf dem Bedienfeld (oder dem inneren Element, das im Bildlauf angezeigt wird) spielen, bevor Sie aufrufen, um eine Layoutaktualisierung auszulösen.
- 1. Zelle Bearbeitung in JTable
- 2. Holen Wert von einer Zelle in JTable
- 3. Löschen hervorgehobene Zelle in Jtable
- 4. Access JTable Zelle Komponente
- 5. JTable Zelle Editor Dezimilierungsschwelle
- 6. JTable Zelle Null zurück
- 7. Get Vordergrund Zelle jtable
- 8. Wie JTable Zelle Rendering nach Zelle bearbeitet
- 9. Werte von JTable-Zelle erhalten
- 10. JTable Zelle mit boolescher Datentyp
- 11. JTable - Farbauswahl einer Linie
- 12. Wie mehrere Zeilen in einer JTable Zelle
- 13. Hinzufügen eines Spinner in einer JTable-Zelle
- 14. Symbol in JTable-Zelle, die Fehlausgabe verursacht
- 15. Größe ändern JTable, die in einem JPanel ist
- 16. Wie wird eine JTable in einem JPanel mit Java angezeigt?
- 17. JTable stoppen Zelle bearbeiten ohne Benutzer klicken
- 18. JTable für JPanel mit multiple type JComponent (Swing)
- 19. BorderLayout - JPanel in JPanel
- 20. Hinzufügen von Schaltfläche zu der Zelle in Jtable in Netbeans
- 21. Fußzeile in einer JTable
- 22. Eine Zelle in JTable sichtbar machen, wenn AbstractTableModel erweitert wird
- 23. Zugriff auf die Daten jeder Zelle in einer JTable
- 24. Zwei oder mehr Zeilen in einer JTable-Zelle?
- 25. Zeige einen Tooltip über einer Zelle in einer JTable
- 26. Combobox Pop-out nicht, wenn in JTable Zelle
- 27. JTable Hinzufügen von 2 Mini-Button in eine Zelle
- 28. wie zu bearbeiten/update jtable Zelle Werte in Datenbank
- 29. Zellvalidierung in JTable
- 30. Fokus einstellen UND Cursor auf bestimmte JTable-Zelle blinkend
Siehe auch http://stackoverflow.com/questions/4167452 – trashgod