WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   DefaultTableCellRenderer ?? (http://www.wcm.at/forum/showthread.php?t=174767)

Frankster 25.09.2005 22:00

DefaultTableCellRenderer ??
 
Hi!

Wenn ich zur Laufzeit die Hintergrundfarbe einer Zeile in einer JTable ändern möchte, funktioniert dies mit dem Renderer oder muss ich da einen Listener verwenden ?

Weil so viel ich mitbekommen habe, funkt der Renderer nur bei isSelected oder hasFocus. Und das hats bei mir ja nicht.

Es soll zu einer bestimmten Zeit die Hintergrundefarbe verändert werden. Am besten durch einen Methodenaufruf, oder mal Testhalber durch einen Buttonklick.
Bei mir wär das immer nur die 1. Zeile

Vielen Dank im voraus
Frankster

itsme 26.09.2005 09:20

<Codesnippet>
.
.
public boolean isCellEditable(int row, int col){
col_selected = table.getSelectedColumn();
row_selected = table.getSelectedRow();
if (((String)getValueAt(row_selected, 11)).equalsIgnoreCase("Y"))
table.setSelectionBackground(Color.red);
else
table.setSelectionBackground(Color.green);
table.revalidate();

if ((col == -1) || (col > getVisibleColumns())) {
return false;
} else {
return true;
}}
.
.

hoffe, das hilft dir weiter

Frankster 26.09.2005 09:40

Und wann wird das per Buttonklick aufgerufen ?

Ich verändere ja den Inhalt nicht, sondern nur die Hintergrundfarbe

Und wenn ich die Zelle editierbar machen, kann man ja den Inhalt der Zelle auch ändern und dass will ich ja nicht

itsme 26.09.2005 10:21

dann nimmst halt nur diesen teil:

...

table.setSelectionBackground(<DieFarbeDieDuWillst> );
table.revalidate();

...

Frankster 26.09.2005 10:48

Bitte verzeih mir meine nervenden Fragen ;)
Aber diese JTable macht mich noch wahnsinnig, was ich mit derer schon alles durchgemacht habe ;-)

Ich würde ja nur gerne die 1. Reihe rot färben und nicht die komplette JTable.

Daher weiss ich nicht ob man da einen CellRender braucht oder nicht.
weil wenn ich sage:
tabe.setBackground(Color.green);

Ist der Hintergrund der kompletten Table grün, und dass will ich nicht

itsme 26.09.2005 12:49

darum habe ich auch zuerst den codeteil des tablemodels gepostet.
das kannst du an deine bedürfnisse anpassen, z.b.

...
if table.getSelectedRow()= <ZuFärbendeZeile> then
<farbe1>
else
<farbe2>
...

damit färbst du die <ZuFärbendeZeile> mit <farbe1>, alle anderen mit <farbe2>

Frankster 26.09.2005 23:10

Hi!

Jetzt hab ichs überrissen ;-)

Ist eh voll simple gewesen *g*

Danke

Farkarich 27.09.2005 14:50

renderer
 
sollte aber noch leichter gehen, du bekommst bei einer funktion eh mit welche row und welche column selektiert worden is...

dann ersparst dir das mit der table, sie mal in da javadoc welche methoden du implementieren musst....

is ned schwer...

itsme 27.09.2005 16:43

naja, bin auch kein guru ;)

Frankster 29.09.2005 23:21

Wie kann ich dem Renderer beibringen, dass er auf Rechtsklicks auch reagiert ?

itsme 30.09.2005 08:50

da mußt du den mouse_event abfangen. dort kannst du feststellen, welcher button die aktion ausgelöst hat und entsprechend reagieren.

am besten ist, du siehst dir das an:

http://www.galileocomputing.de/openb....htm#Xxx999432

Frankster 30.09.2005 12:40

Code:

else if (isSelected) {
            label.setBackground(lightBlue);
            table.addMouseListener(new MouseAdapter() {
                public void mousePressed(MouseEvent e) {
                    if (SwingUtilities.isRightMouseButton(e)) {
                        System.out.println(e.getPoint());
                        System.out.println("Hallo");
                        label.setBackground(darkBlue);
                    }
                }
            }
            );

Er reagiert auf den rechten Mausklick, aber er verändert nicht den Hintergrund wie bei einem links Klick

itsme 30.09.2005 12:48

dein listener wird erst erzeugt, wenn dein button bereits selektiert wurde. damit kann er keine events verarbeiten, denn zu diesem zeitpunkt gibts wahrscheinlich keine ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag