Portal > Foren > Java > Desktop-Applikationen und Grafik > JTable oder Alternative mit mehrzeiligen Datensätzen
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 13.08.2005, 13:36 Nach oben    #1
Benutzer
 
Registriert seit: 13.08.2005
Beiträge: 67
Standard JTable oder Alternative mit mehrzeiligen Datensätzen

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.
Robinson ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.08.2005, 22:44 Nach oben    #2
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 582
Standard

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
sparrow ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.08.2005, 09:07 Nach oben    #3
Benutzer
 
Registriert seit: 13.08.2005
Beiträge: 67
Standard

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.
Robinson ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.08.2005, 01:38 Nach oben    #4
taik84
Gast
 
Beiträge: n/a
Standard

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;
  }
} 
c/o: Java Insel 4

Und somit hast Du eine mehrzeilige Zelle.

Ich hoffe ich konnte Dir etwas helfen.

Gruß

Taik
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.08.2005, 16:58 Nach oben    #5
Benutzer
 
Registriert seit: 13.08.2005
Beiträge: 67
Standard

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());
und so
Code:
table.setDefaultRenderer(String.class,new DoubleTeamTextCellRenderer());
passiert nichts, was ist die Bedeutung des Parameters Class<?>?????

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.
Robinson ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.08.2005, 11:29 Nach oben    #6
taik84
Gast
 
Beiträge: n/a
Standard

Probier mal so:
Code:
table.setDefaultRenderer(Object.class, new DoubleTeamTextCellRenderer());
Code:
class DoubleTeamTextCellRenderer extends JLabel oder JTextArea oder ...
und im CellRenderer schreibtst du einfach hin, wenn spalte == 1 , dann setze setForeGround(Color.GREEN); und setText(<html><img=....>bla bla<br>"+übergegebenes Value+"</html>); sonst setText(value.toString());
Du kannst auch Unterscheidung nach instanceof machen: if(value instanceof String) {...} else setText(value.toString());
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.08.2005, 12:16 Nach oben    #7
taik84
Gast
 
Beiträge: n/a
Standard

Wenn Du möchtest, dann kann ich Dir mein CellRenderer zuschicken. Aber der funktioniert nicht 100%-ig, da ich an ihm noch arbeite.

Gruß

Taik
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ä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


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45