2010-11-18 6 views
1

J'ai une ArrayList de chaînes dans mon bean java. Je veux être en mesure d'ajouter/supprimer de cette liste au moment du design dans l'éditeur de propriétés. Comment puis-je l'implémenter? Je reviens à Java après 5 ans donc je suis un peu stupide. J'ai réussi à obtenir que toutes mes propriétés de type simples soient modifiables dans l'éditeur, mais cette propriété, lorsque vous cliquez sur "..." dans l'éditeur de propriétés, indique que l'édition personnalisée n'est pas prise en charge pour ce type. Alors ... Quelqu'un peut-il me diriger dans la bonne direction?Java Bean ArrayList

Merci une tonne !!!

+0

Veuillez définir "dans l'éditeur de propriétés". – DwB

+0

L'éditeur de propriétés dans le concepteur GUI désolé. (NetBeans). Je dois en faire un contrôle réutilisable et l'arrayliste est une liste de valeurs restreintes que la personne utilisant mon contrôle peut définir au moment du design. – Kamiikoneko

Répondre

-1

Je ne sais pas ce que vous entendez par éditeur de propriétés. Parlez-vous d'un IDE?

Dans tous les cas, si votre liste est privée, vous avez 2 options pour autoriser l'accès à celle-ci.

1) Renvoyer une référence à la liste, sur laquelle un appelant peut alors opérer.
2) Créez une méthode add/removeListElement, et transmettez les chaînes que vous voulez ajouter ou supprimer.

J'aime mieux l'option 2, car elle permet une meilleure encapsulation/dissimulation des données de la liste.

Quelque chose comme ce qui suit, qui est pseudo mais vous obtenez l'idée ....

class TheBean { 
    private List strings = .... 

    getStrings(){ 
     return Collections.unmodifiableList(this.strings) // so if you return the reference people cant muck with it. 
    } 

    addListElement(String toAdd) { 
     // possibly validate toAdd 
     this.strings.add(toAdd); 
    } 
    // you also need removeListelement 
} 
+0

Oui désolé, le projet nécessite que j'utilise Netbeans, donc je le suis. J'ai besoin de l'éditeur de propriétés pour le concepteur d'interface graphique pour permettre au client d'ajouter/supprimer des membres à cette liste de tableaux dans le concepteur de l'interface graphique sans aucun codage. – Kamiikoneko

+0

Je crée un contrôle d'utilisateur réutilisable s'il aide – Kamiikoneko

1

Mmm ... Est-ce que vous signifie cela?

import java.util.List; 

public MyBean { 

private List<String> stringList; 

public void add(String str) { 
    stringList.add(str); 
} 

public String get(int i) { 
    return stringList.get(i); 
} 

public String[] getElements() { 
    String[] elements; 
    stringList.toArray(elements);   
    return elements; 
} 

// ... Your bean struct here 

} 

ou vous avez besoin this (JList).

+0

Cette solution ne fait pas ce que j'ai besoin de faire. J'ai besoin de faire en sorte que les éléments peuvent être ajoutés et supprimés de cette liste dans le concepteur. comme lorsque vous cliquez sur le bouton "..." et que vous pouvez spécifier des valeurs, j'ai besoin de savoir comment cela est fait pour un Arraylist. – Kamiikoneko

0

Malheureusement, le Java Beans Spec ne mentionne aucune collection, mais il prend en charge les tableaux en tant que "propriétés indexées".

Le modèle est:

Type[] getFoo(); 
void setFoo(Type[] value); 
Type getFoo(int index); 
void setFoo(int index, Type[] value); 

composants populaires comme JList et DTree contourner cette limitation en mettant en œuvre un modèle (ce qui est techniquement juste une propriété) et un éditeur de composant personnalisé pour modifier visuellement le modèle.

Il existe un java trail pour les éditeurs personnalisés, ce qui explique cela en détail. Je ne sais pas s'il est possible de créer un éditeur pour une propriété get/set de type ArrayList<T>, mais c'est probablement aussi possible.

0
class TheBean { 
    private List strings = .... 

getStrings(){ 
    return Collections.unmodifiableList(this.strings) // so if you return the reference people cant muck with it. 
} 

addListElement(String toAdd) { 
    // possibly validate toAdd 
    this.strings.add(toAdd); 
} 
// you also need removeListelement 
}