carookee - group communication for you
Home / JavaForum / Swing + AWT
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
4.421 User online
0 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 273 von 1460 (19%) |<   <   >   >|

Autor Harald Faber
Datum 11.09.03, 12:09
Betreff Re: JTable, Zellen markiern


    Zitat:
    Hallo,
    ich muss bei einer JTable Zellen so markieren wie man es vielleicht von Outlook oder Evolution in der Tagesansicht kennt, also etwa 90% der Breite einer Zelle und über mehrere Zellen hinweg ein Kasten mit einer anderen Farbe und einem Text drinne. Hat da jemand eine Idee?
    Habe es mit einem JLayeredPane versucht, da sehe ich dann aber irgendwie gar nix...
    Danke schon mal für Ideen, Gruss, Thomas.
Ich kenne zwar die Markierungen von Outlook und Evolution nicht, aber prinzipiell ist der Tabelle ein Renderer zuzuweisen:

jtMain.setDefaultRenderer(Object.class, new MyRenderer());

Object.class umfasst dann allerdings alle Felder, evtl. eingrenzen.

Den angepassten MyRenderer leitest Du vom DefaultTableCellRenderer ab und implementierst dort die Methode getTableCellRendererComponent(...)
z.B. mit
this.setBackground( Color.yellow );
this.setForeground( Color.blue );
return this;

Praktisch ist, dass bei getTableCellRendererComponent(...) noch ein boolean übergeben wird, der anzeigt, ob die Zelle gerade selektiert ist (issel) und von der man die Vordergrund/Hintergrundzeichnung bzw. -farbe abhängig machen kann.
Wenn Du die selektierte Zelle auch noch umrandet haben möchtest, implementierst Du zusätzlich paint(Graphics g) z.B. so:
{
    super.paint( g );
    if( isfocussed )
    {
        g.setColor(SystemColor.yellow);
        g.drawRect(1, 1, getWidth() - 2, getHeight() - 2);
    }
}

Wobei isfocussed als Klassenvariable angelegt werden und in getTableCellRendererComponent(...) so gesetzt werden sollte:
isfocussed = hasfocus;
(hasfocus kommt als Parameter mit)

Probiers mal aus und sag an, ob das ungefähr Deinen Anforderungen entspricht.


Diskussionsverlauf:
JTable, Zellen markiern und srollen
    Re: JTable, Zellen markiern

 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com