2013-12-16 1 views
1

У меня есть JList заселения списка строкJava JSepartor в JList без использования нонсенса строки в свинге

String[] values = new String[] {"David Pickwell", "-", "Tico", "-", "Jack Wilshere", "-","Nick Johanson"}; 

Я использовал этот метод в течение многих лет, чтобы добавить JSeparator в GUI с помощью пользовательского ListCellRender. Таким образом, он проверяет, соответствует ли текущая строка «-», она будет отображать разделитель.

public Component getListCellRendererComponent(JList<? extends Object> list, Object value, 
    int index, boolean isSelected, boolean cellHasFocus) { 

    ... 

    String str = (value == null) ? "" : value.toString(); 
    if (SEPARATOR.equals(str)) { // What I am talking about 
    return separator; 
    } 

    ... 

    return this; 
} 

Должен сказать, что мне это не нравится. Он работает, но позже потребуется немного больше работы, чтобы проверить, что строка отправляет запрос ... где-то еще. Итак, я бы хотел:

String[] values = new String[] {"David Pickwell", "Tico", "Jack Wilshere", "Nick Johanson"}; 

И после каждого элемента будет представлен новый разделитель.

Как я мог это сделать?

+0

Вы можете получить некоторые идеи из [пример] (http://www.jroller.com/santhosh/entry/jcombobox_items_with_separators), который использует 'JComboBox' – MadProgrammer

+0

Это еще проверка для строки , затем вставьте разделитель после него. – lnguyen55

+0

Вы хотите переписать классы ListUI или JList? В принципе, вам потребуется какой-то способ либо вернуть два разных рендеринга ячеек на основе ваших потребностей, либо дополнить процесс рисования. Это сложнее, чем кажется, поскольку вы будете изменять высоту строки и, следовательно, любую функциональность мыши по пути – MadProgrammer

ответ

1

Просмотреть эти сообщения. Кажется, что другие также используют пользовательский ListCellRender, так что, возможно, это путь. Однако вам нужно только написать то, что было сделано один раз. Поэтому, если вы написали это в прошлом, просто параметризуете класс и повторно его используете. Обычно мне приходилось создавать библиотеку utils при использовании Swing или любого другого инструментария GUI, если на то пошло.

Java List with line separation Adding JSeparator to a DefaultListModel

+0

Он по-прежнему использует строку разделителя для проверки массива строк. – lnguyen55

+0

Проблема с этими подходами заключается в том, что (IMHO) вы все равно можете выбрать разделитель (не пробовали, но это то, что он, кажется, делает) – MadProgrammer

+0

Правильно, разделитель по-прежнему выбирается указателем. – lnguyen55