为什么;“鼠标悬停”;。是否在GWT标头中无法识别等于(event.getType()?
我有一张有名字栏的桌子 我希望当用户鼠标悬停在nameColumn的标题上时,它将触发一个方法 我试过:为什么;“鼠标悬停”;。是否在GWT标头中无法识别等于(event.getType()?,gwt,gwtp,Gwt,Gwtp,我有一张有名字栏的桌子 我希望当用户鼠标悬停在nameColumn的标题上时,它将触发一个方法 我试过: Header<String> nameColumnHeader = new Header<String>(new ClickableTextCell()) { @Override public String getValue() { return "Name"; } @Overr
Header<String> nameColumnHeader = new Header<String>(new ClickableTextCell()) {
@Override
public String getValue() {
return "Name";
}
@Override
public final void onBrowserEvent(Context context, Element elem, NativeEvent event) {
if ("mouseover".equals(event.getType())) {
//
meaningMessagesPopup.show();
}
else if("mouseout".equals(event.getType())){
meaningMessagesPopup.hide();
}
}
};
table.addColumn(nameColumn, nameColumnHeader);
标题名称ColumnHeader=新标题(新的ClickableTextCell()){
@凌驾
公共字符串getValue(){
返回“名称”;
}
@凌驾
公共最终void onBrowserEvent(上下文上下文、元素元素、NativeEvent事件){
if(“mouseover”.equals(event.getType())){
//
meaningMessagesPopup.show();
}
else if(“mouseout.equals(event.getType())){
meaningMessagesPopup.hide();
}
}
};
table.addColumn(nameColumn,nameColumnHeader);
但是Gwt似乎没有识别出“mouseover”.equals(event.getType())
您知道如何在GWT标题中执行MOUSEOVER事件吗?我找到了答案,即创建一个扩展AbstractCell的CustomCell
private class HeaderCell extends AbstractCell<String> {
private String text;
public HeaderCell(String text) {
/*
* Let the parent class know that our cell responds to click events and
* keydown events.
*/
//super("click", "keydown");
super("mouseover");
this.text=text;
}
@Override
public void onBrowserEvent(Context context, Element parent, String value,
NativeEvent event, ValueUpdater<String> valueUpdater) {
// Check that the value is not null.
if (value == null) {
return;
}
// Call the super handler, which handlers the enter key.
super.onBrowserEvent(context, parent, value, event, valueUpdater);
if ("mouseover".equals(event.getType())) {
SafeHtmlBuilder sb=new SafeHtmlBuilder();
sb.appendHtmlConstant("<b>");
sb.appendHtmlConstant("<font color=\"blue\">");
sb.appendEscaped(text);
sb.appendHtmlConstant("</font></b>");
meaningMessagesPopup.setWidget(new HTML(sb.toSafeHtml()));
int left = event.getClientX() -140;
int top = event.getClientY() +30;
meaningMessagesPopup.setPopupPosition(left, top);
// Show the popup
meaningMessagesPopup.show();
}
else if ("mouseout".equals(event.getType())) {
meaningMessagesPopup.hide();
}
}
@Override
public void render(Context context, String value, SafeHtmlBuilder sb) {
/*
* Always do a null check on the value. Cell widgets can pass null to
* cells if the underlying data contains a null, or if the data arrives
* out of order.
*/
if (value == null) {
return;
}
sb.appendEscaped(value);
}
}
私有类HeaderCell扩展AbstractCell{
私有字符串文本;
公共标题单元格(字符串文本){
/*
*让父类知道我们的单元格对单击事件和
*键控事件。
*/
//超级(“点击”、“按键”);
超级(“鼠标盖”);
this.text=文本;
}
@凌驾
public void onBrowserEvent(上下文上下文、元素父级、字符串值、,
NativeEvent事件,ValueUpdater(ValueUpdater){
//检查该值是否不为null。
如果(值==null){
返回;
}
//调用超级处理程序,它处理enter键。
onBrowserEvent(上下文、父级、值、事件、值更新程序);
if(“mouseover”.equals(event.getType())){
SafeHtmlBuilder sb=新的SafeHtmlBuilder();
某人以““””号结尾;
某人以““””号结尾;
某人(文本);
某人以““””号结尾;
meaningMessagesPopup.setWidget(新的HTML(sb.toSafeHtml());
int left=event.getClientX()-140;
int top=event.getClientY()+30;
含义消息spopup.setpoupposition(左,上);
//显示弹出窗口
meaningMessagesPopup.show();
}
else if(“mouseout.equals(event.getType())){
meaningMessagesPopup.hide();
}
}
@凌驾
公共void呈现(上下文上下文、字符串值、安全HtmlBuilder sb){
/*
*始终对值执行null检查。单元格小部件可以将null传递给
*如果基础数据包含空值,或者如果数据到达
*坏了。
*/
如果(值==null){
返回;
}
某人(价值);
}
}
然后
Header name columnheader=新标题(新标题单元格(“我的文本…”)){
@凌驾
公共字符串getValue(){
返回“名称”;
}
};
table.addColumn(nameColumn,nameColumnHeader);
添加GWT.log(“事件:+Event.getType());到您的onBrowserEvent()方法。您是否看到捕获的事件?看到“mouseover”事件了吗?System.out.println(event.getType());然后,当我单击列标题时,它会显示“单击”,但当我将鼠标悬停在上面时,它不会显示任何内容
Header<String> nameColumnHeader = new Header<String>(new HeaderCell("my Text...")) {
@Override
public String getValue() {
return "Name";
}
};
table.addColumn(nameColumn, nameColumnHeader);