GWT中的对话框是';不可拖动或集中
我是GWT编程新手。到目前为止,我有一个对话框,它应该收集登录名和密码,如果需要,它可以启动另一个对话框,允许某人创建一个新帐户 这两个对话框中的第一个始终显示在浏览器屏幕的左上角,不能拖动,尽管对话框的部分定义是可以拖动。但是,第二个对话框可以在屏幕上拖动,没有任何问题 <>我最喜欢的是第一个对话框出现在屏幕中间并且是可拖动的,这两个都是自动发生的,但是没有。 那么,什么东西可以阻止对话框被拖动呢?根面板上还没有任何内容。这有区别吗 如果代码片段有帮助的话,它们是可用的,但是对于一些指针来说,这个概要可能就足够了 谢谢GWT中的对话框是';不可拖动或集中,gwt,dialog,Gwt,Dialog,我是GWT编程新手。到目前为止,我有一个对话框,它应该收集登录名和密码,如果需要,它可以启动另一个对话框,允许某人创建一个新帐户 这两个对话框中的第一个始终显示在浏览器屏幕的左上角,不能拖动,尽管对话框的部分定义是可以拖动。但是,第二个对话框可以在屏幕上拖动,没有任何问题 我最喜欢的是第一个对话框出现在屏幕中间并且是可拖动的,这两个都是自动发生的,但是没有。 那么,什么东西可以阻止对话框被拖动呢?根面板上还没有任何内容。这有区别吗 如果代码片段有帮助的话,它们是可用的,但是对于一些指针来说,这个
Neil如果看不到任何代码,就很难判断出哪里出了问题。以下代码适用于我(忽略缺少的样式…):
两个框都是可拖动的,显示在浏览器窗口的中心。
使用<代码>对话框>()/代码>这将把对话框放在屏幕中间。默认情况下,对话框通常是可拖动的
只是尝试了一下,不管你的根面板是否是空的。当我只是在ModuleLoad上显示对话框时,它是可拖动的,并且居中。问题可能出在别的地方 这就是谷歌自身的例子:public class DialogBoxExample implements EntryPoint, ClickListener {
private static class MyDialog extends DialogBox {
public MyDialog() {
// Set the dialog box's caption.
setText("My First Dialog");
// DialogBox is a SimplePanel, so you have to set its widget property to
// whatever you want its contents to be.
Button ok = new Button("OK");
ok.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
MyDialog.this.hide();
}
});
setWidget(ok);
}
}
public void onModuleLoad() {
Button b = new Button("Click me");
b.addClickListener(this);
RootPanel.get().add(b);
}
public void onClick(Widget sender) {
// Instantiate the dialog box and show it.
new MyDialog().show();
}
}
关于DialogBox的更多信息。经过大量的尝试和错误,我发现了问题所在,问题在于:我在一个基于DialogBox的名为fireEvent的对象中找到了一个方法,它如下所示:
public void fireEvent(GwtEvent<?> event)
{
handlerManager.fireEvent(event);
}
。。。或者是这个
public void fireAnEvent(GwtEvent<?> event)
{
handlerManager.fireEvent(event);
}
public void fireAnEvent(GwtEvent事件)
{
handlerManager.fireEvent(事件);
}
对话框是可拖动的。但是,如果方法以行开头
public void fireEvent(GwtEvent<?> event)
public void firevent(GwtEvent事件)
然后结果是一个无法拖动的对话框
我对此感到有些不安,因为我无法理解为什么我选择的方法名称会影响对话框的可拖动性,或者为什么使用基类(GwtEvent)而不是扩展它的自定义类会影响可拖动性。我怀疑像我这样天真的新手也有很多类似的陷阱
(期望对话框本身居中只是我的错误。)看起来您正在小部件中覆盖此方法:
public void fireEvent(GwtEvent<?> event) {
if (handlerManager != null) {
handlerManager.fireEvent(event);
}
}
public void firevent(GwtEvent事件){
if(handlerManager!=null){
handlerManager.fireEvent(事件);
}
}
在小部件中,handlerManager指的是私有handlerManager
可以将super.firevent(event)添加到您的方法中,也可以按您所做的那样重命名它。是的,这对我也适用,我也一直在做类似的事情。我会尽量把我正在做的事情减少到最低限度,然后发布。谢谢你的帮助。是的,再一次,这很好,但是这和我所做的没有明显的区别。知道DialogBox在默认情况下是可拖动的是问题的关键,因为我不知道如何关闭这种行为,即使我愿意,但我的一个不会移动!谢谢你的回复。
public void fireEvent(GwtEvent<?> event)
public void fireEvent(GwtEvent<?> event) {
if (handlerManager != null) {
handlerManager.fireEvent(event);
}
}