Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaSWT-从其他类创建新窗口_Java_Swt_Jface - Fatal编程技术网

JavaSWT-从其他类创建新窗口

JavaSWT-从其他类创建新窗口,java,swt,jface,Java,Swt,Jface,今天,我想使用Eclipse创建一个简单的JavaSWTGUI应用程序,但为了更清晰,我想将每个子窗口都放在一个不同的类中。因为我对Java编程非常陌生,有没有一种方法可以让一个不同的类通过调用一个方法来完成它的任务?我在网上到处找,但找不到我要找的东西 这是我到目前为止所拥有的 Button foo = new Button(shell, SWT.PUSH); foo.setText("Edit"); foo.addListener(SWT.Selection, new Listener()

今天,我想使用Eclipse创建一个简单的JavaSWTGUI应用程序,但为了更清晰,我想将每个子窗口都放在一个不同的类中。因为我对Java编程非常陌生,有没有一种方法可以让一个不同的类通过调用一个方法来完成它的任务?我在网上到处找,但找不到我要找的东西

这是我到目前为止所拥有的

Button foo = new Button(shell, SWT.PUSH);
foo.setText("Edit");
foo.addListener(SWT.Selection, new Listener() {
    public void handleEvent(Event e) {
        switch (e.type) {
            case SWT.Selection:
                // Call the other Class file here
                break;
        }
    }
});

对。这是可能的。不过,我不会称之为“调用类”,而是用SWT术语称之为“打开另一个窗口”

您只需在另一个类中包装一个
Shell
,然后从“外部”调用
open()

如果你想编辑一些东西,你甚至可以


有很多方法可以做你想做的事情,我只是选择了一个简单的版本。但这不是唯一的办法。等待回答,他会带来另一个很酷的例子

我建议您也阅读
Shell
的javadoc

例如:

类(作为Java应用程序运行)

另一个shell.class(这将是您的“其他类”)


对。这是可能的。不过,我不会称之为“调用类”,而是用SWT术语称之为“打开另一个窗口”

您只需在另一个类中包装一个
Shell
,然后从“外部”调用
open()

如果你想编辑一些东西,你甚至可以


有很多方法可以做你想做的事情,我只是选择了一个简单的版本。但这不是唯一的办法。等待回答,他会带来另一个很酷的例子

我建议您也阅读
Shell
的javadoc

例如:

类(作为Java应用程序运行)

另一个shell.class(这将是您的“其他类”)


请举个例子好吗?谢谢,谢谢。回答正确,很遗憾,我到目前为止还不能投票?谢谢,谢谢。回答正确,不幸的是我到目前为止无法投票。
/**
 * 
 * @author ggrec
 *
 */
public class ShellTest
{

    // ==================== 2. Instance Fields ============================

    private AnotherShell anotherShell;


    // ==================== 3. Static Methods =============================

    public static void main(final String[] args)
    {
        new ShellTest();
    }


    // ==================== 4. Constructors ===============================

    private ShellTest()
    {
        final Display display = new Display();
        final Shell shell = new Shell(display);
        shell.setLayout(new GridLayout(1, false));

        anotherShell = new AnotherShell();

        createContents(shell);

        shell.pack();
        shell.open();
        while (!shell.isDisposed())
        {
            if ( !display.readAndDispatch() )
                display.sleep();
        }
        display.dispose();
    }


    // ==================== 5. Creators ===================================

    private void createContents(final Composite parent)
    {
        final Button buttonOpen = new Button(parent, SWT.PUSH);
        buttonOpen.setText("Open");

        buttonOpen.addSelectionListener(new SelectionAdapter()
        {
            @Override public void widgetSelected(final SelectionEvent e)
            {
                anotherShell.open();
            }
        });

        final Button buttonClose = new Button(parent, SWT.PUSH);
        buttonClose.setText("Close");

        buttonClose.addSelectionListener(new SelectionAdapter()
        {
            @Override public void widgetSelected(final SelectionEvent e)
            {
                anotherShell.close();
            }
        });
    }
}
/**
 * 
 * @author ggrec
 *
 */
public class AnotherShell
{

    // ==================== 2. Instance Fields ============================

    private Shell shell;


    // ==================== 4. Constructors ===============================

    public AnotherShell()
    {
        shell = new Shell(Display.getCurrent());
    }


    // ==================== 6. Action Methods =============================

    public void open()
    {
        shell.open();
    }

    public void close()
    {
               // Don't call shell.close(), because then
               // you'll have to re-create it
        shell.setVisible(false);
    }
}