当用户使用窗口关闭按钮(红色X)按钮关闭任何应用程序窗口时。它会导致我的应用程序出现小部件被释放问题。当他们使用我提供的关闭应用程序关闭窗口时。一切正常。
@Override
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, "Close Aplot", true);
}
@Override
protected void okPressed() {
getShell().setVisible(false);
}
我要做的第一件事是覆盖Application ationWindow中的关闭()方法
/** the rc from the message dialog */
int rc = -1;
@Override
public boolean close()
{
MessageDialog messagedialog = new MessageDialog(getShell(),
"Confirm Exit", null, "Are you sure you want to exit?", 4,
new String[]
{ "Yes", "No" }, 1);
messagedialog.setBlockOnOpen(true);
messagedialog.open();
rc = messagedialog.getReturnCode();
/** int to hold the return code from the message dialog */
if (rc == 0)
{
return true;
} else
{
return false;
}
}
我要做的第二件事是在“X”关闭按钮上侦听事件
shell.addListener(SWT.Close, new Listener()
{
@Override
public void handleEvent(Event event)
{
switch (rc)
{
case 0: // yes pressed
event.doit = true;
break;
case 1: // no pressed
event.doit = false;
break;
case -1: // escape pressed
break; // do nothing
default:
break;
}
}
});
“event.doit”布尔字段确定shell的闭包。如果该值等于“true”-“let doit”,则让我们关闭外壳(即rc=0)。
如果该值等于1(rc=1),则外壳保持打开状态。
如果按下ESC(即rc=-1),我们什么都不做。但是如果这是一个要求,我们可以最小化shell,或者根据这个事件执行一些其他操作。
在jface对话框中,无论在哪里按下OK或按下CANCEL或单击关闭(红色x按钮),它总是会调用关闭()
方法。
覆盖关闭方法并检查返回代码(使用getReportnCode
()方法)。
监听Shell
上的SWT.关闭
。
这应该有助于:
public static void main(String[] args)
{
Display display = new Display();
final Shell shell = new Shell(display);
shell.addListener(SWT.Close, new Listener()
{
public void handleEvent(Event event)
{
int style = SWT.APPLICATION_MODAL | SWT.YES | SWT.NO;
MessageBox messageBox = new MessageBox(shell, style);
messageBox.setText("Information");
messageBox.setMessage("Close the shell?");
event.doit = messageBox.open() == SWT.YES;
}
});
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
它将提示用户验证该决定。
作为Java的新手,多年的iOS和。NET的经验,我发现这是非常令人困惑。我想要的是一个非常简单的对话框(从主窗口调用),带有OK和Cancel按钮。单击“确定”时,它会执行一些操作,然后关闭对话框。单击“取消”时,它只会取消对话框。 然而,使用SWT shell对话框类来实现这一点并不明显。如何获得一个按钮来关闭对话框,并将执行返回到主窗口?
我有一个关于右上角红色按钮关闭应用程序(Windows 7)的快速问题...我在Java中编程了ServerSocket,但当我使用此关闭按钮关闭应用程序时,服务器会继续运行...我想捕获此事件(如果可能),并确保当按下此按钮时,包括ServerSocket在内的整个程序都已关闭。 这是一段代码,我认为我必须修改以捕捉这一事件。。。 任何帮助都将不胜感激。。。谢谢
问题内容: 你好, 我正在使用Java Swing,并且想在单击按钮时关闭一个窗口。我不知道使用动作侦听器作为执行此操作的最佳方法,但是目前我正在编译错误,因此它一定是不正确的。 这是我的代码: 我遇到的问题是列出的最后一个类,它实际上只是关闭当前窗口,因此再次显示主菜单屏幕。我需要在该类中创建的静态引用。但是将其更改为静态是无效的修饰符吗? 我该如何解决? 问题答案: 试试这个 并发送一个实例给
我想在JavaFX中创建特定的组件。在 onClick 事件后显示 poupup 的按钮。 情景: > < li> 我们单击按钮 弹出显示下面的按钮(如图片上所示)
我需要通过控制器中的代码关闭当前的fxml窗口 我知道stage.close()或stage.hide()在fx中这样做 我们将非常感谢所有的帮助。谢谢!
问题内容: 最终编辑: 我在关闭pyplot窗口这一主题上发现,实际上可能不应该使用pyplot完成它。SRK给出了一个很好的示例,说明如何处理将在下面的答案中更新的图。我也偶然发现了如何将pyplot图放到Tkinter窗口中,并且Tkinter比pyplot更擅长打开和关闭窗口。这里是怎样把一个pyplot情节变成Tk的窗口, /最终编辑 我希望能够显示多个图,然后能够从某些代码输入中分别关闭