![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Benutzer Registriert seit: 13.08.2005
Beiträge: 67
|
Hi, ich bin auf der Suche nach einer schöneren Darstellung von tabellarischen Informationen. Ich benutze bisher eine JTable um Daten darzustellen. Jetzt würde ich gerne ein wenig mehr aus der Darstellung machen. Bsp: erste Spalte enthalt über zwei Zeilen ein kleines Bild eines Artikels zweite Spalte enthält oben den Namen, darunter eine beliebig lange Beschreibung (mehrzeilig!) die dritte Spalte bekommt von mir aus den netto Preis oben und den brutto Preis unten. Wenn die Zeile ausgewählt ist sollten alle Daten dieses Datensatzes gewählt sein. Sonst könnte man ja einfach zwei Zeilen schreiben, und Linien sollte auch nur ober und unterhalb sein. Gibt es Komponenten die solche flexiblen Darstellungen unterstützen? Oder was ich befürchte muss das alles von neuen Programmiert werden. Wenn ja gibt es Komponenten (Source) bei denen man sich einzellne Ansätze mal anschauen könnte? Hab mich erst ein paar Tage damit beschäftigt, bin also in erster Lineie auf der Suche nach Gleichgesinnten! Hab noch nichts vergleichbares im Netz gefunden. Danke für Tips wie ich an eine solche Funktionalität rankommen kann. |
| | |
| | Nach oben #2 |
| Sesselkleber Registriert seit: 17.01.2005
Beiträge: 582
|
Ich bin mir ja nicht hinterprozentig sicher, aber kann man nicht in ein JTable beliebige Objekte einfügen, nicht nur Text? Wenn dem so ist, dann könntest du in Spalte 1 das Bild legen, in Spalte 2 den Beschreibungstext, in Spalte 3 ein neuen JTable mit 2 Reihen und einer Spalte. Wenn nicht gibt es noch die Möglichkeit JList zu verwenden, mehrere um genau zu sein, und diese so nebeneinander auszurichten, dass sie wie eine Tabelle wirken. Gruß Sparrow |
| | |
| | Nach oben #3 |
| Benutzer Registriert seit: 13.08.2005
Beiträge: 67
|
Danke für die schnelle Antwort. Dass ich verschiedene Objekte in eine Zelle legen kann ist klar. Da einfach noch eine Table einzufügen habe ich bisher nicht bedacht. Gibt es da Erfahrungen wie das mit der Performance ist. Würde ja bedeuten dass ich für 100 Datensätze bei nur einer Zelle mit zwei Zeilen bereits 101 Tabellen hätte, und entsprechend mehr bei aufwendigeren Anordnungen. Was damit auch noch nicht gelöst wäre ist die Sache mit dem mehrzeiligen Inhalten (langer Text mit automatischem Zeilenumbruch!). Bin auch gerade dabei mir noch ein paar mehr Gedanken zu machen über die Komponente die ich gerne hätte. Habe mir überlegt ob es nicht einfacher wäre eine Komponente zu entwickeln bei der man seine Zeilen selbst definieren kann,.... Führt dann zu der Frage wie aufwendig ist es so etwas selbst zu schreiben. Werde mich parallel zu meiner Suche nach einer geeigneten Table Komponente auch damit mal auseinander setzen. |
| | |
| | Nach oben #4 |
| Gast
Beiträge: n/a
|
Vielleicht kennst Du das schon. Aber man kann mit einem eigenst geschriebenen DefaultCellRenderer, welches ein zur Darstellung der Zellen benutzt wird, auch mehrzeilige Inhalte in einer Zelle darstellen. Man muss sich nur entscheiden, ob jede einzelne Zelle ein JLabel, JTextField, JTextArea o.ä. darstellt. Code:
package table; import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class DoubleTeamTextCellRenderer
extends JTextArea implements TableCellRenderer
{
public Component getTableCellRendererComponent( JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column )
{
// Text setzen
setText( "1\n2" );
return this;
}
} Und somit hast Du eine mehrzeilige Zelle. Ich hoffe ich konnte Dir etwas helfen. Gruß Taik |
|
| | Nach oben #5 |
| Benutzer Registriert seit: 13.08.2005
Beiträge: 67
|
Das klingt gut. Ich hattee bereits von den CellRenderer gelesen. Hab jetzt mal versucht Dein Beipiel umzusetzen, aber ich bin scheinbar zu doof. Wie füge ich den CellRenderer in die Tabelle ein? Habs so versucht Code: table.setDefaultRenderer(JLabel.class,new DoubleTeamTextCellRenderer()); Code: table.setDefaultRenderer(String.class,new DoubleTeamTextCellRenderer()); Hatte in diesem Zusammenhang in verschiedenen Artikel gelesen dass damit noch immer nicht das Problem gelöst seie wenn die Zeilen unterschiedlich hoch sind. Wie verhält sich diese Lösung bezüglich der Zeilenhöhe? Habe mal ein wenig mit HTML in den Zellen rumgespielt und hier schon das Problem gehabt dass die Zeilenhöhe nur allgemein definiert werden kann. Kann ich eine Art autofix Lösung realisieren die Jeder Zeile genau die benötigte Höhe zuteilt? Ganz schön viele lustige Ideen der Bub, aber wo hier so viele Fachleute sind sollten wir doch die super Komponente noch zusammenbekommen. Danke im Vorraus. |
| | |
| | Nach oben #6 |
| Gast
Beiträge: n/a
|
Probier mal so: Code: table.setDefaultRenderer(Object.class, new DoubleTeamTextCellRenderer()); Code: class DoubleTeamTextCellRenderer extends JLabel oder JTextArea oder ... Du kannst auch Unterscheidung nach instanceof machen: if(value instanceof String) {...} else setText(value.toString()); |
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| JTable reagiert nicht auf Menueklick | tommyboy | Desktop-Applikationen und Grafik | 8 | 20.08.2006 23:38 |
| Probleme mit JTable: Spaltenbreite ändert sich einfach wieder! | Lautsprecher | Datenbanken | 2 | 20.10.2005 15:26 |
| GESUCHT:simples beispiel zum thema resultset, tablemodel => in einer JTable ausgeben! | bamboocha | Desktop-Applikationen und Grafik | 2 | 06.06.2005 21:34 |
| JTable aktualisieren | Vril | Desktop-Applikationen und Grafik | 3 | 21.05.2005 16:37 |
| Spaltennamen in einer JTable | argos | Desktop-Applikationen und Grafik | 6 | 15.05.2005 18:16 |