Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Отображение строк в Jtable


Автор: MrLjaO 4.4.2006, 12:54
Хорошего настроения всем .
Такая вещь - - в Jtable в столбце одном есть текст... при фокусе(выделении) меняеться размер шрифта - и ,как результат имеем то , что вся строка не влазит в ячейку... и имеем символы "...." в конце ( smile
Где то видел как с этим бороться... но уже длолго не могу найти как). Кто знает - помогите плиз

Автор: LSD 4.4.2006, 14:45
При выделении ячейки шрифт не меняется (по умолчанию во всяком случае), у ячейки меняется Border. Попробуй так:
Код
UIManager.put("Table.focusSelectedCellHighlightBorder", new LineBorder(Color.BLACK, 1, false));
UIManager.put("Table.focusCellHighlightBorder", new LineBorder(Color.BLUE, 1, false));

Автор: MrLjaO 4.4.2006, 15:07
Для столбцов с текстом я делал так :
Код

class RendererText extends JLabel implements TableCellRenderer {
          public Component getTableCellRendererComponent(JTable table, Object value,
                                                    boolean isSelected,
                                                    boolean hasFocus,
                                                    int row, int column) {
              if(value instanceof String){
                  setText((String)value);
                  setVerticalAlignment(JLabel.TOP);
                  setHorizontalAlignment(JLabel.LEFT);
                  if(isSelected)
                     setFont(new Font("",Font.BOLD,14));
                  else
                   setFont(new Font("",Font.PLAIN,14));
                 
              }
            
             return this;
            }
      } 

при данном способе - нету выделения визуального... но можно изменить шрифт текста... как раз когда я выделяю ячейку Текст в соответствующем Jlable становиться BOLD и выходит за границы - отсюда обрезание поледних символов (а иногда и доброго куска строки) и добавление "...".
И я не могу понять как мне споймать тот момент, когда ширины ячейки не хватает для полного отображения текста. (Решение данной проблемы есть ... видел на форуме... но ни как не могу найти её снова). и сделать так.. что бы невмещающийся текст перешёл на следующую строку... или в несколько строк(если требуеться)

Автор: domster 5.4.2006, 09:20
Цитата

и сделать так.. что бы невмещающийся текст перешёл на следующую строку... или в несколько строк(если требуеться)


Создай CellRenderer, наследуй от JTextArea и будет тебе счастье

Код

public class MultiLineCellRenderer extends JTextArea implements TableCellRenderer {
        
    public MultiLineCellRenderer() {
        setLineWrap(true);
        setWrapStyleWord(true);        
    }
            
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {        
        if (isSelected) {
            setForeground(table.getSelectionForeground());
            setBackground(table.getSelectionBackground());            
        } else {
            setForeground(table.getForeground());
            setBackground(table.getBackground());
        }
        setFont(table.getFont());        
        setText((value == null) ? "" : value.toString());        
        int rowHeight = (int)getPreferredSize().getHeight(); 
        if (table.getRowHeight(row) < rowHeight){
            table.setRowHeight(row,    rowHeight);            
        }
        return this;
    }
}

Автор: MrLjaO 5.4.2006, 10:58
Чёрт....
Всё работает. (( Спасибо. Плохо одно! То что я не сам до этого додумался.... (( Спасибо! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)