Java Bean ArrayList - PullRequest
       21

Java Bean ArrayList

1 голос
/ 18 ноября 2010

В моем Java-бине есть ArrayList of Strings.Я хочу иметь возможность добавлять / удалять из этого списка во время разработки в редакторе свойств.Как мне это реализовать?Я возвращаюсь на Яву примерно через 5 лет, поэтому я немного глуп.Мне удалось заставить все мои простые свойства типа быть редактируемыми в редакторе, но это свойство, когда вы нажимаете «...» в редакторе свойств, говорит, что пользовательское редактирование не поддерживается для этого типа.Итак ... Кто-нибудь может указать мне правильное направление?

Спасибо за тонну !!!

Ответы [ 4 ]

1 голос
/ 18 ноября 2010

Ммм ... Вы имеете в виду это?

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

}

или вам нужно this (JList) .

0 голосов
/ 13 мая 2013
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 голосов
/ 05 сентября 2012

К сожалению, в спецификации Java Beans нет упоминаний о каких-либо коллекциях, однако она поддерживает массивы как "индексированные свойства".

Шаблон:

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

Популярные компоненты, такие как JList и JTree, обойдут это ограничение, реализовав модель (которая технически является просто свойством) и редактор пользовательских компонентов для визуального редактирования модели.

Существует след Java для пользовательских редакторов, которые объясняют это подробно.Я не уверен, возможно ли создать редактор для свойства get / set типа ArrayList<T>, но, возможно, это также возможно.

0 голосов
/ 18 ноября 2010

Я не уверен, что вы подразумеваете под редактором свойств.Вы говорите об IDE?

В любом случае, если ваш список закрыт, у вас есть 2 варианта разрешения доступа к нему.

1) Вернуть ссылку на список, которыйЗатем вызывающая сторона может работать.
2) Создайте метод add / removeListElement и передайте строки, которые вы хотите добавить или удалить.

Мне больше нравится вариант 2, потому что он обеспечивает лучшую инкапсуляцию / сокрытие данныхсписка.

Что-то вроде следующего, что является псевдо, но вы понимаете ...

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
}
...