java SWT单击按钮打开另个窗体

窗体1publicclassaextendsShell{staticDisplaydisplay;staticashell;publicstaticvoidmain(St... 窗体1
public class a extends Shell {
static Display display;
static a shell;
public static void main(String args[]) {
try {
display= Display.getDefault();
shell = new a(display, SWT.SHELL_TRIM);
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
} catch (Exception e) {
e.printStackTrace();
}
}

public a(Display display, int style) {
super(display, style);
createContents();
}
protected void createContents() {
setText("SWT Application");
setSize(500, 375);
final Button button = new Button(this, SWT.NONE);
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
b b=new b(display,SWT.CLOSE);
b.open();
shell.setVisible(false);
}
});
button.setText("button");
button.setBounds(210, 168, 48, 25);
//
}
@Override
protected void checkSubclass() {
// Disable the check that prevents subclassing of SWT components
}
}
窗体2:为窗体添加关闭事件
addShellListener(new ShellAdapter() {
public void shellClosed(final ShellEvent e) {

a a=new a(b.display,SWT.CLOSE);
a.setVisible(true);
}
});

为什么第一次打开窗体一点按钮会打开窗体二 关闭窗体2也会将窗体1显示出来 可是再次点击按钮 窗体一却不隐藏了 而且关闭窗体2有新打开个窗体1
展开
 我来答
B2K1bonPplR
推荐于2018-05-10 · TA获得超过2049个赞
知道小有建树答主
回答量:1156
采纳率:72%
帮助的人:391万
展开全部

步骤1、首先执行a类中main方法时,创建了一个a,这是a的第一个实例,并把它赋给了a类中的静态类变量shell。

步骤2、之后,窗体1(a类的第一个实例)中点击按钮弹出窗体b,隐藏窗体1(a类的第一个实例)

步骤3、再之后,关闭窗体b,这时在窗体b的shellClosed方法中执行a a=new a(b.display,SWT.CLOSE); 这行代码新生成了一个a的实例,这是a的第二个实例,与a的第一个实例(a类中的静态类变量shell)是两个不同的实例,然而在a类的createContents方法中button的widgetSelected方法中执行的是shell.setVisible(false);,即只隐藏a的第一个实例,而由窗体2关闭所生成的a的第二个实例是没有隐藏的。

所以,窗体2的关闭事件需要修改如下:

    addShellListener(new ShellAdapter() {
      public void shellClosed(final ShellEvent e) {
        a.shell.setVisible(true);
      }
    });

 如果a类和b类不在同一个包中,可以将a类的静态类变量shell声明为public。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式