gpt4 book ai didi

Java SWT - 从其他类创建一个新窗口

转载 作者:行者123 更新时间:2023-11-29 06:36:57 24 4
gpt4 key购买 nike

今天,我想使用 Eclipse 创建一个简单的 Java SWT GUI 应用程序,但为了更清楚起见,我希望将每个子窗口都放在不同的类中。由于我是 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() API。

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


有很多方法可以做你想做的事,我只是选择了一种简单的版本。但这不是唯一的方法。等待Baz为了回答这个问题,他会举出另一个很酷的例子。 ;)

我建议您也阅读 Shell 的 javadoc。

示例:

ShellTest.class(作为 Java 应用程序运行)

/**
*
* @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();
}
});
}
}

AnotherShell.class(这将是您的“其他类”)

/**
*
* @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);
}
}

关于Java SWT - 从其他类创建一个新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19182475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com