> Inhalt: JavaScout Base-System (JSBS)

JSBS_TableCellRenderer – Basisklasse für die Formatierung von Zellen in einer JTable

* Bitte beachten Sie die Hinweise und Bestimmungen bezüglich Urheberrecht, Haftungsausschluß und geschützte Marken oder Warenzeichen die für dieses Web-Dokument und möglicherweise auch für 'verlinkte' Dokumente gelten.

  • Der Betreiber dieser Web-Site (www.javascout.biz) ist nicht verantwortlich für den Inhalt von Web-Sites, die innerhalb dieses Web-Dokumentes oder anderer Dokumente von www.javascout.biz verlinkt sind.

  • Wenn dieses Web-Dokument oder andere Dokumente dieser Web-Site (www.javascout.biz) Rechte von Ihnen verletzen, oder sie glauben, dass Rechte Anderer (Dritter Personen) dadurch verletzt werden, informieren Sie bitte den Betreiber dieser Web-Site.
    Eine E-Mail können Sie ganz einfach durch anklicken des Symbols oder Textes im Frame rechts oben senden.

Dieses Dokument drucken.

 Letzte Bearbeitung dieses  Dokuments:
2010-05-12

Inhaltsverzeichnis

Code 
Erklärungen und Anwendungsbeispiele 
Verwandte Dokumentation
 

Code

package js_base.frame;
/*
 * de:
 * Packages mit den Klassen für die Bearbeitung von verschiedenen GUI-Elementen.
 * en:
 * Packages with the classes to manipulate GUI-Elements. */

import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
/**
 *
 * @author kurt(at)javascout[dot]biz
 * @date 2010-05-12
 *
 * @description
 *  de:
 *  Basisklasse mit modifiziertem TableCellRenderer.
 *  Ein Objekt dieser Klasse kann einem Objekt der Klasse JTable zugeordnet werden und
 *  übernimmt dann die 'Formatierung' des in der jeweiligen Zelle einer JTable angezeigten
 *  Wertes.
 *
 *  In dieser Klasse sind implementiert:
 *  * Rechtsbündiges Anzeigen eines Wertes in Abhängigkeit der Werte im Parameter
 *    parmNumericOrientation.
 *    Dieser Parameter enthält ein Array mit der Anzahl der Dezimalstellen (das bereits in
 *    in der aufrufenden Methode aufbereitet wurde).
 *    Das Array enthält gleich viel Elemente wie Spalten in der JTable vorhanden sind.
 *    Ist der Wert eines Array-Elements kleiner als '0' dann ist der Wert keine Zahl und
 *    der Wert wird linksbündig in der Tabellenzelle angezeigt. Ist der Wert 0 oder größer
 *    dann ist der Wert eine Zahl und wird rechtsbündig in der Tabellenzelle angezeigt.
 *
 *  en:
 *  Base-Class with modified TableCellRenderer.
 *  An object of this class can be attached to an object of class JTable and performs the
 *  'formatting' of the value displayed in each cell of the JTable.
 *
 *  Within this class is implemented:
 *  * Display a value 'right-justified' depending on the values passed in parameter
 *    parmNumericOrientation.
 *    This parameter contains an array with the number of decimals (already prepared in
 *    the calling method).
 *    The array contains the same number of elements as number of columns present in the JTable.
 *    A value of an array-element less than '0' signals that the values in the column are not
 *    numbers and have to be displayed 'left-justified'.
 *    A value of 0 or greater signals a number which has to be displayed 'right-justified'
 *    within the cell of the JTable.
 *
 * @change-log
 * when         who               why
 * --------------------------------------------------------
 * 

 *
 */

public class JSBS_TableCellRenderer extends DefaultTableCellRenderer {
/*
 * VARIABLEN /VARISBLES
 * ------------------- */
/*
 * de:
 * Array mit der Anzahl der Dezimalstellen für jede Spalte.
 * Wird verwendet um zu entscheiden ob der Wert in der Spalte 'linksbündig' oder
 * 'rechtsbündig' angezeigt wird.
 * en:
 * Array with the number of decimals for each column.
 * Is used to decide if the value in a column is displayed 'left-justified' or
 * 'right-justified'. */
    int[] arrayNumericOrientation;
/*
 * de:
 * Anzahl der Elemente in der Variablen arrayNumericOrientation.
 * Wird einmalig ermittelt um die Performanz des Codes zu verbessern.
 * 

 * en:
 * Number of elements within the variable arrayNumericOrientation.
 * Is determined once to improve the performance of the code. */
    int intOrientationColumns;
/*
 * -------------------------------

 * de:
 * CONSTRUCTOR der Klasse; Parameter ist das Array mit der Anzahl der Dezimalstellen.

 * en:

 *
CONSTRUCTOR of the class; parameter is the array with the number of decimals. */
    public JSBS_TableCellRenderer(int[] parmNumericOrientation) {
/* de: Prüfen ob im Parameter ein 'null'-Wert übergeben wurde.
 * en: Check if a 'null'-value was passed within the parameter. */
      
if (parmNumericOrientation == null)
/* de: Variable in dieser Klasse mit einem Array mit Länge 0 füllen.
 * en: Fill the variable within this class with an array of length 0. */
        
arrayNumericOrientation = new int[0];
      
else
/* de: Wert aus dem Parameter in die Variable in dieser Klasse übertragen.
 * en: Transfer the value from the parameter to the variable within this class. */
        
arrayNumericOrientation = parmNumericOrientation;
/* de: Aus Performanzgründen die Anzahl der Elemente im Array jetzt ermitteln.
 * en: Determine the number of elements in the array now to improve the performance. */
      
intOrientationColumns = parmNumericOrientation.length;
    }
/*
 * --------------------
 * de:
 * METHODE zum 'Formatieren' einer Zelle innerhalb der JTable.
 * Diese Methode überschreibt die Methode der geerbten Klasse und wird von JTable für jede

 * Zelle aufgerufen wenn ein Objekt dieser Klasse (JSBS_TableCellRenderer) einem Objekt der
 * Klasse JTable zugeordnet wird.
 * Das Kommando für die Zuordnung ist:
 * 
JTableObject.setDefaultRenderer(JTableObject.getColumnClass(ColumnNumber), JSBS_TableCellRendererObject) .
 * 
 * en:

 * 
METHOD to 'format' a cell within JTable.
 * This method overwrites the method of the inherited class and is called by JTable for each cell
 * when an object of this class (JSBS_TableCellRendere) is assigned to an object of class JTable.
 * The command for an assignement is:
 * 
JTableObject.setDefaultRenderer(JTableObject.getColumnClass(ColumnNumber), JSBS_TableCellRendererObject) . */
    public Component getTableCellRendererComponent(
                      JTable table, Object value,
boolean isSelected,
                      
boolean hasFocus, int row, int column) {
/* 
 * de: Aufrufen der überschriebenen Methode in der geerbten Klasse um die zu bearbeitende Zelle zu ermitteln.

 * en: Call the overwritten method in the inherited class to determine the cell to be processed. */
      Component cell =
super.getTableCellRendererComponent(
                      table, value, isSelected,
hasFocus, row, column);
/* 
 * de:
 * Zur Sicherheit noch einmal Prüfen ob das im Parameter übergebene Array auch für alle Tabellenspalten

 * Werte enthält.
 * en:
 * Securitycheck to determine if the array passed as parameter contains values for all columns of the table. */
      
if (column < intOrientationColumns)
        
if (arrayNumericOrientation[column] >= 0) {
/* de:
 * Der Wert in der Spalte hat eine Anzahl von Dezimalstellen zugeordnet; er ist daher numerisch und soll
 * 'rechtsbündig' angezeigt werden.
 * Eine vereinfachte Annahme ist, dass alle Zellen Objekte der Klasse 'JLabel' enthalten.
 * Solange diese Klasse (JSBS_TableCellRenderer) nur innerhalb von JavaScout BasisKlassen (JSBS)

 * verwendet wird ist das sicher gestellt.

 * en:
 * The value in the column has a number of decimals assigned; it is numeric and has to be displayed

 * 
'right-justified'.
 * A simplification is, that all cells contain objects of class 'JLabel'.
 * As long as this class (JSBS_TableCellRenderer) is only used within the JavaScout BaseClasse (JSBS)

 * this can be assumed. */

          ((JLabel) cell).setHorizontalTextPosition(
TRAILING);
          ((JLabel) cell).setHorizontalAlignment(
TRAILING);
        }
        
else {
/* de:
 * Der Wert in der Spalte hat keine Anzahl von Dezimalstellen zugeordnet; er ist daher Text und soll
 * 'linksbündig' angezeigt werden.
 * en:
 * The value in the column has not a number of decimals assigned; it is text and has to be displayed
 * 'left-justified'. */

          ((JLabel) cell).setHorizontalTextPosition(
LEADING);
          ((JLabel) cell).setHorizontalAlignment(
LEADING);
        }
/* 
 * 
de: Zurückliefern der formatierten Zelle.
 * en: Return the formatted cell. */

        
return cell;
    }
}

zum Inhaltsverzeichnis

Erklärungen und Anwendungsbeispiele

xxx

zum Inhaltsverzeichnis

Verwandte Dokumentation

Dokument

Inhalt

JSBS_XML_DisplayStrings – Basisklasse für das Verarbeiten der XML-STruktur mit den sprachabhängigen Texten  

In der Methode ProcessJTable(...) wird diese Klasse (JSBS_TableCellRenderer) aufgerufen.

zum Inhaltsverzeichnis