2013-07-03 4 views
1

Я использую JList, чтобы обернуть текст переменной, доступный только для чтения, отображаемый пользователю. Каждая строка текста отображается в ячейке списка на основе JTextArea, т.е.Линия Wrap не работает внутри ячеек JList

public class InfoTextCellRenderer extends JTextArea implements ListCellRenderer 

и это средство визуализации используется список:

textList.setCellRenderer(new InfoTextCellRenderer()); 

Компонент JList встроен в JScrollPane.

Я делаю все это, потому что типичный шаблон использования здесь заключается в использовании клавиш со стрелками, а не мыши. Это позволяет выделить текущую ячейку, что делает очевидным для пользователя то, что происходит. Предыдущая реализация с использованием одного JTextArea требовала от пользователя нажимать стрелку вниз несколько раз, пока невидимая каретка (невидимая, потому что она не редактировалась) достигла точки, в которой может прокручиваться (снизу или сверху окна).

Проблема в том, что даже если InfoTextCellRenderer завершает перенос строк и перенос слов, когда текст отображается, обертка не происходит.

public class InfoTextCellRenderer extends JTextArea implements ListCellRenderer { 

    public InfoTextCellRenderer() { 
     this.setFocusable(false); 
    } 

    /* (non-Javadoc) 
    * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean) 
    */ 
    @Override 
    public Component getListCellRendererComponent(JList list, Object value, 
      int index, boolean isSelected, boolean cellHasFocus) { 
     if (isSelected) { 
      setBackground(list.getSelectionBackground()); 
      setForeground(list.getSelectionForeground()); 
     } else {  
      setBackground(list.getBackground()); 
      setForeground(list.getForeground()); 
     } 
     setEditable(false); 
     setFont(list.getFont()); 
     this.setLineWrap(true);   
     this.setWrapStyleWord(true); 
     setText(value == null ? "" : value.toString()); 
     return this; 
    } 

} 

Что может помешать переворачиванию линии?

+0

возможно дубликат [Качели JList с многострочным текстом и динамической высоты] (Http: // stackoverflow.com/questions/7306295/swing-jlist-with-multiline-text-and-dynamic-height) – Aboutblank

ответ

Смежные вопросы