API java : SizeSequence


javax.swing
Class SizeSequence

java.lang.Object
  extended by javax.swing.SizeSequence

public class SizeSequence
extends Object

A SizeSequence object efficiently maintains an ordered list of sizes and corresponding positions. One situation for which SizeSequence might be appropriate is in a component that displays multiple rows of unequal size. In this case, a single SizeSequence object could be used to track the heights and Y positions of all rows.

Another example would be a multi-column component, such as a JTable, in which the column sizes are not all equal. The JTable might use a single SizeSequence object to store the widths and X positions of all the columns. The JTable could then use the SizeSequence object to find the column corresponding to a certain position. The JTable could update the SizeSequence object whenever one or more column sizes changed.

The following figure shows the relationship between size and position data for a multi-column component.

The first item begins at position 0, the second at the position equal
 to the size of the previous item, and so on.

In the figure, the first index (0) corresponds to the first column, the second index (1) to the second column, and so on. The first column's position starts at 0, and the column occupies size0 pixels, where size0 is the value returned by getSize(0). Thus, the first column ends at size0 - 1. The second column then begins at the position size0 and occupies size1 (getSize(1)) pixels.

Note that a SizeSequence object simply represents intervals along an axis. In our examples, the intervals represent height or width in pixels. However, any other unit of measure (for example, time in days) could be just as valid.

Implementation Notes

Normally when storing the size and position of entries, one would choose between storing the sizes or storing their positions instead. The two common operations that are needed during rendering are: getIndex(position) and setSize(index, size). Whichever choice of internal format is made one of these operations is costly when the number of entries becomes large. If sizes are stored, finding the index of the entry that encloses a particular position is linear in the number of entries. If positions are stored instead, setting the size of an entry at a particular index requires updating the positions of the affected entries, which is also a linear calculation.

Like the above techniques this class holds an array of N integers internally but uses a hybrid encoding, which is halfway between the size-based and positional-based approaches. The result is a data structure that takes the same space to store the information but can perform most operations in Log(N) time instead of O(N), where N is the number of entries in the list.

Two operations that remain O(N) in the number of entries are the insertEntries and removeEntries methods, both of which are implemented by converting the internal array to a set of integer sizes, copying it into the new array, and then reforming the hybrid representation in place.


Constructor Summary
SizeSequence()
          Creates a new SizeSequence object that contains no entries.
SizeSequence(int numEntries)
          Creates a new SizeSequence object that contains the specified number of entries, all initialized to have size 0.
SizeSequence(int[] sizes)
          Creates a new SizeSequence object that contains the specified sizes.
SizeSequence(int numEntries, int value)
          Creates a new SizeSequence object that contains the specified number of entries, all initialized to have size value.
 
Method Summary
 int getIndex(int position)
          Returns the index of the entry that corresponds to the specified position.
 int getPosition(int index)
          Returns the start position for the specified entry.
 int getSize(int index)
          Returns the size of the specified entry.
 int[] getSizes()
          Returns the size of all entries.
 void insertEntries(int start, int length, int value)
          Adds a contiguous group of entries to this SizeSequence.
 void removeEntries(int start, int length)
          Removes a contiguous group of entries from this SizeSequence.
 void setSize(int index, int size)
          Sets the size of the specified entry.
 void setSizes(int[] sizes)
          Resets this SizeSequence object, using the data in the sizes argument.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SizeSequence

public SizeSequence()
Creates a new SizeSequence object that contains no entries. To add entries, you can use insertEntries or setSizes.

See Also:
insertEntries(int, int, int), setSizes(int[])

SizeSequence

public SizeSequence(int numEntries)
Creates a new SizeSequence object that contains the specified number of entries, all initialized to have size 0.

Parameters:
numEntries - the number of sizes to track
Throws:
NegativeArraySizeException - if numEntries < 0

SizeSequence

public SizeSequence(int numEntries,
                    int value)
Creates a new SizeSequence object that contains the specified number of entries, all initialized to have size value.

Parameters:
numEntries - the number of sizes to track
value - the initial value of each size

SizeSequence

public SizeSequence(int[] sizes)
Creates a new SizeSequence object that contains the specified sizes.

Parameters:
sizes - the array of sizes to be contained in the SizeSequence
Method Detail

setSizes

public void setSizes(int[] sizes)
Resets this SizeSequence object, using the data in the sizes argument. This method reinitializes this object so that it contains as many entries as the sizes array. Each entry's size is initialized to the value of the corresponding item in sizes.

Parameters:
sizes - the array of sizes to be contained in this SizeSequence

getSizes

public int[] getSizes()
Returns the size of all entries.

Returns:
a new array containing the sizes in this object

getPosition

public int getPosition(int index)
Returns the start position for the specified entry. For example, getPosition(0) returns 0, getPosition(1) is equal to getSize(0), getPosition(2) is equal to getSize(0) + getSize(1), and so on.

Note that if index is greater than length the value returned may be meaningless.

Parameters:
index - the index of the entry whose position is desired
Returns:
the starting position of the specified entry

getIndex

public int getIndex(int position)
Returns the index of the entry that corresponds to the specified position. For example, getIndex(0) is 0, since the first entry always starts at position 0.

Parameters:
position - the position of the entry
Returns:
the index of the entry that occupies the specified position

getSize

public int getSize(int index)
Returns the size of the specified entry. If index is out of the range (0 <= index < getSizes().length) the behavior is unspecified.

Parameters:
index - the index corresponding to the entry
Returns:
the size of the entry

setSize

public void setSize(int index,
                    int size)
Sets the size of the specified entry. Note that if the value of index does not fall in the range: (0 <= index < getSizes().length) the behavior is unspecified.

Parameters:
index - the index corresponding to the entry
size - the size of the entry

insertEntries

public void insertEntries(int start,
                          int length,
                          int value)
Adds a contiguous group of entries to this SizeSequence. Note that the values of start and length must satisfy the following conditions: (0 <= start < getSizes().length) AND (length >= 0). If these conditions are not met, the behavior is unspecified and an exception may be thrown.

Parameters:
start - the index to be assigned to the first entry in the group
length - the number of entries in the group
value - the size to be assigned to each new entry
Throws:
ArrayIndexOutOfBoundsException - if the parameters are outside of the range: (0 <= start < (getSizes().length)) AND (length >= 0)

removeEntries

public void removeEntries(int start,
                          int length)
Removes a contiguous group of entries from this SizeSequence. Note that the values of start and length must satisfy the following conditions: (0 <= start < getSizes().length) AND (length >= 0). If these conditions are not met, the behavior is unspecified and an exception may be thrown.

Parameters:
start - the index of the first entry to be removed
length - the number of entries to be removed

Ces informations proviennent du site de http://java.sun.com

Remarques

Contenu

Le contenu de cette page provient du site de Sun, et est généré depuis un cache sur l'infobrol après certains traitements automatisés. La présentation peut donc différer du document original, mais le contenu aussi. Vous pouvez utiliser ce bouton pour afficher la page originale du site de Sun :

Quels sont les motivations de cette démarche?

Maintenir les pages en cache sur différents sites peut offrir plus de disponibilité.

Chaque page est indexée dans la base de donnée, ce qui permet de retrouver facilement les informations, au moyen des sommaires, du moteur de recherche interne, etc.

Des facilités sont mises en place pour que les membres de l'infobrol puissent effectuer des traductions en français des différents documents. Ceci devrait permettre aux débutants en programmation Java de consulter les API en français s'ils maîtrisent moins bien la langue de Shakespeare. Dans le cas où une traduction a été soumise, elle est disponible au moyen d'un lien en bas de page. Si la traduction a été validée, la page s'affiche par défaut en français, et un lien en bas de page permet d'atteindre la version en anglais.

Le code sur l'infobrol est automatiquement coloré selon la syntaxe, et les différents mots clés sont transformés en liens pour accéder rapidement aux informations.

Vous avez la possibilité de partager vos expériences en proposant vos propres extraits de code en utilisant le bouton "ajouter un commentaire" en bas de page. Si vous visitez simplement l'infobrol, vous avez déjà accès à cette fonction, mais si vous étes membre du brol, vous pouvez en plus utiliser des boutons supplémentaires de mise en forme, dont la coloration automatique de vos extraits de codes.

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

6 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-1522
Document créé le 30/08/06 02:48, dernière modification le Vendredi 17 Juin 2011, 12:12
Source du document imprimé : http://www.gaudry.be/java-api-rf-javax/swing/SizeSequence.html Document affiché 1 fois ce mois de Juin.
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Navigation (masquer)
Apparence (afficher)
Stats (afficher)
15832 documents
452 astuces.
549 niouzes.
3099 definitions.
447 membres.
8115 messages.

Document genere en :
0,99 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
Les passions sont toutes bonnes de leur nature et nous n'avons rien à éviter que leurs mauvais usages ou leurs excès.

René Descartes [Extrait de Les passions de l’âme]
 
l'infobrol
Nous sommes le Samedi 02 Juin 2012, 04:46, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)