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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JTable и Drag&Drop 
:(
    Опции темы
ShkVal
Дата 24.3.2005, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Посмотрите пожалуйста, что я не так сделал? Drag&Drop не хочет работать
Код

public class DNDTable extends JTable implements DropTargetListener, DragSourceListener, DragGestureListener  {
    //private DropTarget dropTarget = null;
    private DragSource dragSource = null;

    private int[] selectedRows;
    private int[] selectedColumns;

    protected static Object dndObj;


    public DNDTable() {
        super(new DefaultTableModel());
        initComponents();
    }

    public DNDTable(TableModel dm) {
        super(dm);
    }

    public DNDTable(final Object[][] rowData, final Object[] columnNames) {
        super(rowData, columnNames);
    }

    private void initComponents() {
        //dropTarget = new DropTarget(this, this);
        dragSource = new DragSource();
        dragSource.createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_MOVE, this);
    }

    public void drop(DropTargetDropEvent event) {
        Transferable transferable = event.getTransferable();
        event.acceptDrop(DnDConstants.ACTION_MOVE);
        event.getDropTargetContext().dropComplete(true);
        dragDropFinish(transferable);
    }

    public void dragGestureRecognized(DragGestureEvent event) {
     selectedRows = getSelectedRows();
        selectedColumns = getSelectedColumns();

        if (selectedRows.length != 0) {
            Transferable transfer = dragDropStart();

            if (transfer==null) transfer = new StringSelection(selectedRows+"|"+selectedColumns);
            // as the name suggests, starts the dragging
            try {
                dragSource.startDrag(event, DragSource.DefaultCopyDrop, transfer, this);
            } catch (InvalidDnDOperationException e) {
                System.err.println(e.getMessage());
            }
        }
    }
    
    public Transferable dragDropStart() {
        System.out.println("[VLR] DNDTable.dragDropStart() selectedRows="+selectedRows);
        System.out.println("[VLR] DNDTable.dragDropStart() selectedColumns="+selectedColumns);
        return null;
    }

    /** override it!*/
    public void dragDropFinish(Transferable transfer) {
        System.out.println("[VLR] DNDTable.dragDropFinish()");
    }

    public void dragDropEnd(DragSourceDropEvent evt) {
        return;
    }

    public void dragEnter(DragSourceDragEvent evt) {
        return;
    }

    public void dragExit(DragSourceEvent evt) {
        return;
    }

    public void dragOver(DragSourceDragEvent evt) {
        return;
    }

    public void dropActionChanged(DragSourceDragEvent evt) {
        return;
    }

    public void dragEnter(DropTargetDragEvent event){
        event.acceptDrag (DnDConstants.ACTION_MOVE);
    }
    public void dragExit(DropTargetEvent event){}
    public void dragOver(DropTargetDragEvent event) {
    }
    public void dropActionChanged ( DropTargetDragEvent event ){}
}


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


Опытный
**


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

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



Усли у человека надо мной Drag & Drop нехочет работать, то у меня не получается оключиьт его в JTable, для запрета перетаскивания столбцов, использую  table.setDragEnabled(false); - не помогает =(
PM MAIL   Вверх
w1nd
Дата 16.5.2007, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

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



ShkVal, всё можно сделать существенно проще - посмотрите на класс javax.swing.TransferHandler. 

Цитата(cube @  16.5.2007,  15:42 Найти цитируемый пост)
Усли у человека надо мной Drag & Drop нехочет работать, то у меня не получается оключиьт его в JTable, для запрета перетаскивания столбцов, использую  table.setDragEnabled(false); - не помогает =(

Перетаскивание к механизму DnD отношение не имеет. Включается/отключается так:
Код
table.getTableHeader().setReorderingAllowed(...);






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


Опытный
**


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

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



Цитата(w1nd @ 16.5.2007,  23:38)
ShkVal, всё можно сделать существенно проще - посмотрите на класс javax.swing.TransferHandler. 

Цитата(cube @  16.5.2007,  15:42 Найти цитируемый пост)
Усли у человека надо мной Drag & Drop нехочет работать, то у меня не получается оключиьт его в JTable, для запрета перетаскивания столбцов, использую  table.setDragEnabled(false); - не помогает =(

Перетаскивание к механизму DnD отношение не имеет. Включается/отключается так:
Код
table.getTableHeader().setReorderingAllowed(...);

Спасибо помогло!
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.0596 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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