|
Letzte
Bearbeitung dieses Dokuments: |
Code
Erklärungen
und Anwendungsbeispiele
Verwandte
Dokumentation
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;
}
}
xxx
Dokument |
Inhalt |
In der Methode ProcessJTable(...) wird diese Klasse (JSBS_TableCellRenderer) aufgerufen. |