Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ленточная форма, на базе JTable 
V
    Опции темы
maxlab
Дата 4.6.2007, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 22.11.2006

Репутация: нет
Всего: нет



Здрасте!
Может кто натыкался на готовую реализацию сабжа? Нужно чтобы выглядело как в Акцесс например...

--------------------
Удивительное рядом... но оно запрещено!
PM MAIL   Вверх
fixxer
Дата 4.6.2007, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 15
Всего: 27



А что такое "Ленточная форма"?


--------------------
user posted image
PM MAIL ICQ   Вверх
maxlab
Дата 4.6.2007, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 22.11.2006

Репутация: нет
Всего: нет



Выглядит вот так

Присоединённый файл ( Кол-во скачиваний: 34 )
Присоединённый файл  LineForm1.jpg 30,44 Kb
--------------------
Удивительное рядом... но оно запрещено!
PM MAIL   Вверх
fixxer
Дата 4.6.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 15
Всего: 27



В общем-то несложно и самому сделать. Читайте javadoc по JTable, TableModel, TableCellRenderer, TableCellEditor


--------------------
user posted image
PM MAIL ICQ   Вверх
maxlab
Дата 5.6.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 22.11.2006

Репутация: нет
Всего: нет



мда... несложно конечно, но нужно ли? Заново велосипед изобретать... 
Нашел я пример как это сделать... он уже с бородой наверное... Немного модифицировал рендерер. В принципе работает но есть шероховатость... не пойму в чем :( Полосы прокрутки в ячейке таблицы работают только в режиме редактирования. Как сделать чтобы в режиме просмотра они тоже фурычили?
Код


import javax.swing.*;
import javax.swing.table.*;

public class TextAreaRendererTest extends JFrame {
  private final JTable table = new JTable(10, 4);

  public TextAreaRendererTest() {
    super(System.getProperty("java.vm.version"));

    TableColumnModel cmodel = table.getColumnModel();
    TextAreaRenderer textAreaRenderer = new TextAreaRenderer();
    table.setRowHeight(100);

    cmodel.getColumn(1).setCellRenderer(textAreaRenderer);
    cmodel.getColumn(2).setCellRenderer(textAreaRenderer);
    cmodel.getColumn(3).setCellRenderer(textAreaRenderer);
    TextAreaEditor textEditor = new TextAreaEditor();
    cmodel.getColumn(1).setCellEditor(textEditor);
    cmodel.getColumn(2).setCellEditor(textEditor);
    cmodel.getColumn(3).setCellEditor(textEditor);

    String test = "The lazy dog jumps over the quick brown fox";

    for (int column = 0; column < 4; column++) {
      table.setValueAt(test, 0, column);
      table.setValueAt(test, 4, column);
    }
    test = test + test + test + test + test + test + test + test;
    table.setValueAt(test, 4, 2);

    getContentPane().add(new JScrollPane(table));
    setSize(600, 600);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
  }
  public static void main(String[] args) {
    new TextAreaRendererTest();
  }
}


Код


import javax.swing.*;

public class TextAreaEditor extends DefaultCellEditor {
  public TextAreaEditor() {
    super(new JTextField());
    final JTextArea textArea = new JTextArea();
    textArea.setWrapStyleWord(true);
    textArea.setLineWrap(true);
    JScrollPane scrollPane = new JScrollPane(textArea);
    scrollPane.setBorder(null);
    editorComponent = scrollPane;

    delegate = new DefaultCellEditor.EditorDelegate() {
      public void setValue(Object value) {
        textArea.setText((value != null) ? value.toString() : "");
      }
      public Object getCellEditorValue() {
        return textArea.getText();
      }
    };
  }
}


Код

import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.util.*;

public class TextAreaRenderer extends JScrollPane implements TableCellRenderer {
  private final DefaultTableCellRenderer adaptee = new DefaultTableCellRenderer();
  private final JTextArea jTextArea  = new JTextArea() ;

  public TextAreaRenderer() {
    jTextArea.setLineWrap(true);
    jTextArea.setWrapStyleWord(true);
    this.setViewportView(jTextArea);
  }

  public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected,boolean hasFocus, int row, int column) {
    adaptee.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column);
    jTextArea.setForeground(adaptee.getForeground());
    jTextArea.setBackground(adaptee.getBackground());
    jTextArea.setBorder(adaptee.getBorder());
    jTextArea.setFont(adaptee.getFont());
    jTextArea.setText(adaptee.getText());
    return this;
  }
}



Может кто свежим взглядом найдет грабли smile

--------------------
Удивительное рядом... но оно запрещено!
PM MAIL   Вверх
ilia1234
Дата 5.6.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 4.6.2007

Репутация: нет
Всего: нет



не очень красиво, но работает:
Код

...
private final JTable table = new JTable(10, 4);
private int row = -1;
private int col = -1;
...
table.addMouseMotionListener(new MouseMotionAdapter() 
{
    public void mouseMoved(MouseEvent e) 
    {
        if((col != table.columnAtPoint(e.getPoint())) || (row != table.rowAtPoint(e.getPoint())))
        {
            int col = table.columnAtPoint(e.getPoint());
            int row = table.rowAtPoint(e.getPoint());
                
            table.editCellAt(row, col);    
        }            
            
        super.mouseMoved(e);
    }
});
...

Там еще с курсором в ячейке поиграться надо, чтобы скролик вниз не скакал.

Добавлено через 14 минут и 36 секунд
с курсором будет так:
Код

((JTextArea)((JScrollPane)table.getEditorComponent()).getViewport().getComponent(0)).setCaretPosition(0);

PM MAIL   Вверх
maxlab
Дата 6.6.2007, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 22.11.2006

Репутация: нет
Всего: нет



Супер! То что доктор прописал! 
Огромное мерси...
Тема закрыта
--------------------
Удивительное рядом... но оно запрещено!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.2688 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.