Добавление нескольких виджетов в 1 ячейку?

Используя FlexTable или Grid, я хочу добавить несколько FlowPanel в 1 ячейку. Я знаю, что этого можно добиться, добавив несколько FlowPanel в 1 (родительскую) FlowPanel и добавив родительскую панель в ячейку.

Просто интересно, есть ли способ добавить эти несколько виджетов в 1 ячейку, не помещая их в (родительскую) панель потока?

(Как и в приведенном ниже примере, мне не нужен родительский элемент div, а вместо этого я хочу, чтобы дочерний элемент div отображался непосредственно под тегом.)

<TABLE>
    <TR>
        <td>
            <div id="I-DO-NOT-WANT-THIS-PARENT-DIV">
                <div id="CHILD1"></div>
                <div id="CHILD2"></div>
                <div id="CHILD3"></div>
                <div id="CHILD4"></div>
            </div>
        </td>
    </TR>   
</TABLE>  

Есть идеи?


person user1730159    schedule 19.03.2013    source источник
comment
Я не знаю, какой алгоритм сортировки привел вас к реализации чего-то подобного. Я не думаю, что это возможно, каждая ячейка так устроена. В любом случае у вас есть 2 способа решить эту проблему: # 1. создайте свою собственную гибкую таблицу, используя абсолютную панель в качестве контейнера ячеек, а также переопределив и скопировав все методы [на мой взгляд, никогда этого не делайте]. № 2. Кратко о том, что именно ваша проблема, что заставляет вас думать что-то вроде этого, [надеясь на хорошее объяснение вашего вопроса]. В любом случае, спасибо, что уделили время этому комментарию. :)   -  person Dipak    schedule 19.03.2013
comment
Единственная причина в том, что я хочу создать таблицу, предполагая, что у меня есть 1 строка и несколько столбцов. И в каждой колонке у меня разные элементы управления, которые нужно разместить. Я не хотел создавать несколько строк (по одной для каждого div) в соответствии с ограничениями дизайна пользовательского интерфейса.   -  person user1730159    schedule 20.03.2013
comment
Вы ищете что-то вроде слияния ячеек ??   -  person Adarsha    schedule 20.03.2013
comment
@user1730159 user1730159: Вы хотите добавить разные компоненты в каждый столбец, имеющие разные обработчики для каждого компонента ИЛИ разные обработчики для каждой ячейки?!!!   -  person Dipak    schedule 20.03.2013
comment
Чтобы немного рассказать о том, что я пытаюсь сделать, исходя из приведенной выше структуры таблицы, например, у меня может быть логотип моей компании в CHILD1, таблица с несколькими кнопками в CHILD2, аккордеон с моими навигационными ссылками в CHILD3 и т. д. и т. д. И я хочу, чтобы все эти элементы управления располагались один под другим (прямо внутри тега ‹td›‹/td›), чтобы никакая другая родительская панель не удерживала их вместе. Надеюсь, эта информация поможет понять, что я пытался сделать.   -  person user1730159    schedule 20.03.2013


Ответы (1)


Вы можете манипулировать домом и перемещать элементы к их прародителям. С gwtquery это легко:

import static com.google.gwt.query.client.GQuery.*;
...
final FlowPanel panel = new FlowPanel();
panel.add(new Label("1"));
panel.add(new Label("2"));
panel.add(new Label("3"));

final FlexTable table = new FlexTable();
table.setWidget(0, 0, panel);
RootPanel.get().add(table);

$(panel).children().appendTo($(panel).parent());

Если хотите, с помощью gquery вы можете даже преобразовать <td>таблицы в Panel и продолжить добавлять к ней виджеты:

HTMLPanel newpanel = $(panel).parent().as(Widgets).panel().widget();
panel.removeFromParent();
newpanel.add(new Label("4"));
person Manolo Carrasco Moñino    schedule 19.03.2013
comment
Я уверен, что это сработает, но я не хочу выполнять какие-либо манипуляции с DOM. Я хотел посмотреть, есть ли прямолинейное решение GWT, например, есть ли какие-либо FlexTable или Grid API, о которых я не знаю. В любом случае, спасибо за решение. - person user1730159; 20.03.2013
comment
Для этого нет основного решения GWT, все виджеты, основанные на таблицах, принимают уникальный виджет для каждой ячейки. - person Manolo Carrasco Moñino; 20.03.2013