我正在使用SWT 4.4.2(win32)为简单的测试应用程序构建图形用户界面 通过按下按钮或菜单项我想显示一个新窗口。但是这个窗口不应该是模态对话框。它应该是一种覆盖窗口,因此不会阻止应用程序。
首先在启动时我正在创建程序的所有必要组件:
private void initUI() {
mainWindow = new Shell(display);
...
overlayWindow = new Shell(mainWindow, SWT.MODELESS);
overlayWindow.setLocation(200, 200);
overlayWindow.setSize(160, 33);
overlayWindow.setText("Overlay");
overlayWindow.setVisible(false);
label = new Label(overlayWindow, SWT.CENTER);
label.setLocation(10, 10);
label.setSize(140, 13);
label.setText("Test");
}
稍后我检查覆盖窗口是否可视,因为可见性取决于某些程序选项,如果此时隐藏窗口我想要显示它:
if (!overlayWindow.getVisible()) {
overlayWindow.setVisible(true);
overlayWindow.setFocus();
}
我在SWT中很新,所以我希望我没有做错任何事 我的问题是可见性设置为true(已调试)但我看不到带有“Test”消息的窗口。总是只有主窗口可见。
答案 0 :(得分:0)
(这不一定能回答问题,但在评论中发布代码不会起作用)
我认为问题必定存在于您遗漏的代码中。如果我像这样完成提供的代码,它按预期工作:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(DateTime fromDate, DateTime toDate, string comment)
{
using (IDatabaseLayer db = new DatabaseLayer())
{
if (fromDate != null || toDate != null)
{
db.InsertVacation(Constants.CurrentUser(User.Identity.Name), fromDate, toDate, comment);
ViewData.Model = db.GetUserVacations(Constants.CurrentUser(User.Identity.Name));
}
}
SendVacationMail(fromDate, toDate, comment);
ViewData["posted"] = true;
return View();
}
单击主shell,将打开覆盖外壳。请注意,叠加外壳只有一个黑色细边框,没有标题栏。