- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 EntryPoint 类 WebCrawlerOne.java,其中包含 TabLayoutPanel,并且在其中一个选项卡中我调用包含 CellTable 的 CrawlerOne.java。我已经尝试了很多,但找不到任何错误。我尝试搜索相关主题,但项目运行时 CellTable 在 TabLayoutPanel 中仍然不可见。
已在 css 中指定 TabLayoutPanel 的高度为 .gwt-TabLayoutPanel {高度:100%;}
CrawlerOne.ui.xml 看起来像——g:HTMLpanel 标签内
Hello,
<g:Button styleName="{style.important}" ui:field="button" />
<table cellspacing='0' cellpadding='0' style='width:100%;'>
<tr>
<td valign='top'>
<c:CellTable addStyleNames="{style.cellTable}" ui:field="table"/>
</td>
</tr>
</table>
<g:TextBox ui:field="box"></g:TextBox>
<g:Button ui:field="addSite"></g:Button>
CrawlerOne.java 看起来像 -
public class CrawlerOne extends Composite implements HasText {
interface CrawlerOneUiBinder extends UiBinder<Widget, CrawlerOne> {
}
@UiField
CellTable<Contact> table;
@UiField
Button addSite;
@UiField
TextBox box;
public CrawlerOne() {
Widget w = new Widget();
w = onInitialize();
initWidget(w);
}
@UiField
Button button;
@UiHandler("button")
void onClick(ClickEvent e) {
Window.alert("Hello!");
}
public void setText(String text) {
button.setText(text);
}
public String getText() {
return button.getText();
}
/**
* A simple data type that represents a contact with a unique ID.
*/
private static class Contact {
private static int nextId = 0;
private final int id;
private String site;
private String document;
private String pending;
public Contact(String site, String document, String pending) {
nextId++;
this.id = nextId;
this.site = site;
this.document = document;
this.pending = pending;
}
public String getDocument() {
return document;
}
public int getId() {
return id;
}
public String getSite() {
return site;
}
public void setSite(String site) {
this.site = site;
}
public String getPending() {
return pending;
}
}
/**
* The list of data to display.
*/
private static final List<Contact> CONTACTS = new LinkedList<Contact>(Arrays.asList(
new Contact("www.google.com", "12", "123"),
new Contact("www.yahoo.com", "23", "124"),
new Contact("www.rediff.com", "24", "124"),
new Contact("www.gmail.com", "23", "124"),
new Contact("www.facebook.com", "23", "124"),
new Contact("www.flickr.com", "23", "124"),
new Contact("www.youtube.com", "45", "125")));
private static final ProvidesKey<Contact> KEY_PROVIDER =
new ProvidesKey<Contact>() {
@Override
public Object getKey(Contact object) {
return object.getId();
}
};
/**
* Initialize.
*/
public Widget onInitialize() {
table = new CellTable<Contact>(KEY_PROVIDER);
table.setWidth("100%", true);
table.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
initTableColumns();
// Push the data into the widget.
table.setRowData(CONTACTS);
// Set table width.
table.setWidth("100%");
box = new TextBox();
box.setText("Enter New Site");
addSite = new Button("Add Row");
addSite.addClickHandler(new ClickHandler() {
@UiHandler("addSite")
public void onClick(ClickEvent event) {
// TODO Auto-generated method stub
try {
if(box.getValue()=="") {
Window.alert("Error: Invalid Site Value");
box.setText("Enter New Site");
}
else {
CONTACTS.add(new Contact(box.getValue(), "23", "127"));
table.setRowCount(CONTACTS.size(), true);
table.setRowData(CONTACTS);
table.redraw();
}
}catch (Exception e) {
Window.alert("Exception Error: " + e);
}
}
});
// Create the UiBinder.
CrawlerOneUiBinder uiBinder = GWT.create(CrawlerOneUiBinder.class);
Widget widget = uiBinder.createAndBindUi(this);
return widget;
}
private void initTableColumns() {
//code to add columns
}}//end of file
WebCrawlerOne.java 看起来像 -
public class WebCrawlerOne implements EntryPoint {
/**
* This is the entry point method.
*/
public void onModuleLoad() {
TabLayoutPanel menu = new TabLayoutPanel(10, Unit.EM);
menu.add(new CrawlerOne(), "Crawler");
menu.add(new HTML("This is my page!"), "Page 2");
menu.selectTab(0);
RootLayoutPanel.get().add(menu);
}
}
输出看起来像——
如果直接从 EntryPoint 类运行,则会显示 CellTable。任何帮助表示赞赏。谢谢!
最佳答案
在意识到我认为您真正需要的简单答案之前,我写了一点,所以首先是简单的答案,然后是一些需要考虑的事情。
您正在 ui.xml
文件中创建 CellTable
的新实例。这将替换 onInitialize
中已配置的 CellTable
实例,这意味着它没有列,因此不可见。对 uibinder.createAndBind
的调用将遍历并创建所有带有 @UiField
注释的小部件,除非您将它们标记为已提供。两种选择:
将其标记为已提供:
@UiField(provided = true)
CellTable<Contact> table;
在调用 uibinder.createAndBind
之前不要配置表
//...
Widget widget = uiBinder.createAndBindUi(this);
table.setWidth("100%", true);
table.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
initTableColumns();
// Push the data into the widget.
table.setRowData(CONTACTS);
// Set table width.
table.setWidth("100%");
第一个选项可能更好,因此您可以在绘制任何内容之前完全配置它。也就是说,我也没有测试过(没有提供足够的代码来轻松测试)。
<小时/>各种 LayoutPanel(通常是实现 ProvidesResize 和 RequiresResize 的事物)根据每个 LayoutPanel 具有的特定规则来调整其子级的大小。
这些只能调整其直接子级的大小 - 如果给定一个不需要调整大小的子级(例如 HTMLPanel),它们不会在那里进行任何布局工作,而是期望容器根据其认为合适的方式调整其子级的大小。
因此,HtmlPanel 和您在 ui.xml 文件中绘制的 html 可能会妨碍 TabLayoutPanel 正确地将布局信息传递到 CellTable。如果您不想使用布局内容,那么这是一件好事 - 您需要以其他方式调整 CellTable 的大小。
最后一个想法:使用 FireBug 或类似的工具来确保 dom 按照您的预期设置。在那里您将看到单元格表存在,但没有任何内容。
关于java - CellTable 在 TabLayoutPanel 中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9315794/
我有一个用 UIBinder 制作的普通 TabLayoutPanel。选项卡呈现但没有任何内容。它在 HTML 中,但始终折叠(在元素上设置的内联样式使其折叠)。据我所知,这与我见过的每个 TabL
我在 GWT 中使用 TabLayoutPanel,我希望最后一个选项卡显示在页面的右侧。是否有可能做到这一点? 最佳答案 共同的想法: 将标签容器宽度设置为“自动”而不是预定义的“16384px”
我在 GWT 应用程序中使用 TabLayoutPanel,附加到页面的 RootLayoutPanel。 在每个选项卡中,我都有一个 ScrollPanel,用于显示 FlexTable。 是否可以
我有一个类似于以下的结构 Graph Data
有没有办法让 TabLayoutPanel 根据标签内容动态调整自身大小? 目前,当我没有指定 height 和 width 时,我只看到顶部的菜单,选项卡区域被压扁了。 最佳答案 不是自动的。您必须
我有一个从 ie7 访问的 TabLayoutPanel。我第一次查看标签时,它是折叠的~32px x 32px。如果我选择第二个选项卡,内容区域会填满,我可以返回到第一个选项卡,它看起来是正确的。我
我必须扩展一个给定的 GWT 项目(我们称之为 X),并希望添加一个窗口来可视化我的东西。由于我是 GWT 新手,我创建了一个测试项目并尝试创建 TabLayoutPanel。在此测试项目中,TabL
我有一个 TabLayoutPanel,我不想像下面的代码示例 (tabPanel.setHeight("100px");) 那样给它一个固定的高度。我想给它标签内容的高度,例如第一个选项卡中的 HT
如果我使用新的 TabLayoutPanel 创建我的 TabPanel,它不会显示选项卡内容。仅显示选项卡标题。如果我将相同的代码与 TabPanel 而不是 TabLayoutPanel 一起使用
您好,有没有办法不允许在 GWT TabLayoutPanel(和其他 gwt 小部件)的选项卡上选择文本? 我试着像这样使用 css: .gwt-TabLayoutPanel { user-
我正在尝试在 DockLayoutPanel 中嵌入一个 TabLayoutPanel 但选项卡没有显示:(
我正在开发一个使用标准 GWT TabLayoutPanel 的 GWT 应用程序。刚刚意识到该组件没有在选项卡更改时通知您的事件。 它有一个 getSelectedIndex() 方法,但我需要一个
我有一个带有 2 个选项卡的 TabLayout 面板。我想以编程方式选择第二个选项卡,然后滚动到选项卡中的特定元素。这是我的代码的样子: public void scrollToTextArea(f
如何禁用 TabLayoutPanel 中的选项卡(即用户单击时无法打开选项卡)? 我在网上搜索但找不到解决方案 谢谢 最佳答案 使用 BeforeSelectionHandler : TabLayo
我有一个 EntryPoint 类 WebCrawlerOne.java,其中包含 TabLayoutPanel,并且在其中一个选项卡中我调用包含 CellTable 的 CrawlerOne.jav
我需要一个想法,如果单击此选项卡中的按钮,如何删除选项卡。 谢谢。 最佳答案 向按钮添加一个 ClickHandler,并让它调用 remove 之一方法(采用 int 的方法或采用选项卡小部件的方法
我想使用 TabLayoutPanel 实现水平导航栏,使用自定义样式来满足我的需要。 但我不知道如何覆盖 default 样式。这是 UiBinder 模板: .gwt-TabLa
我想使用 Cssresources 机制来设置 TabLayoutPanel 的标签栏元素的样式。 根据这里的文档是访问栏的样式规则:.gwt-TabLayoutPanel .gwt-TabLayou
我有一个 GWT 代码,但结果是空页。为什么? public void onModuleLoad() { leftPanelSetup(); rightPanelSetup();
大家好,我正在将 GWT 用于数据驱动的 Web 应用程序,但我遇到了嵌入在 TabLayoutPanel 中的 CellTable 的问题。从屏幕截图中可以看出,表格的滚动条没有出现在 TabLay
我是一名优秀的程序员,十分优秀!