使用SWT进行多视图应用;类似于Android活动生命周期

时间:2011-12-29 09:24:57

标签: java swing swt

所以我的情况很简单(恕我直言):

我正在尝试创建网络式Java应用程序(它是一种销售点应用程序),其行为与网站非常相似,但都是Java。现在我有一个用Eclipse编写的半简单SWT应用程序,它显示了一些选项(登录,价格检查,库存检查和员工时钟)。当按下任何一个(或激活相应的键盘快捷键)时,会弹出一个对话框提示验证。假设用户已经过验证,我希望主应用程序窗口能够无缝地显示一组新功能(扫描项目,项目查找等)。

如果这是HTML,我只会创建一个新页面,如果我正在针对Android平台编写,我只会创建一个新活动...但这是非常新的,我很难找到任何相关的信息。

PS如果有人认为不同的库/技术(例如Swing / AWT)更好,我就没有设置SWT。

2 个答案:

答案 0 :(得分:3)

在SWT中,如果要替换Composite的内容,首先需要处理现有控件,然后创建新控件,最后在Composite上调用layout(...)方法:

// Retrieve existing composite
Composite composite = [retrieve existing composite]

// Remove exising children
for (Control child : composite.getChildren()) {
     child.dispose();
}

// Create new children
Label label = new Label(composite, SWT.NONE);

// Layout
// Maybe update the composite layout with composite.setLayout()
composite.layout(true, true);

如果您想要来回显示多个预定义内容,另一种解决方案是使用CompositeStackLayout

答案 1 :(得分:1)

您是否使用Swing,AWT或SWT完全是您的选择。就个人而言,我更喜欢Swing,但你可以用SWT做同样的事情。

至于你的困境,你需要先做一些关于GUI的研究。 Java桌面应用程序由顶级容器组成,通常是一个JFrame(Window),可以包含其他组件,窗口,对话框等。这里最好的是弹出一个MODAL对话框,询问用户身份验证信息。如果用户已通过身份验证,您可以在代码中动态创建按钮,文本框等,从而创建所需的“新”外观。

我可能会建议您先进行一些简单的GUI设计练习,然后再深入了解完整的应用程序吗?考虑http://docs.oracle.com/javase/tutorial/uiswing/处的Java GUI教程是一个很好的起点。

一旦掌握了基本的对话框,表格和组件,您就可以更好地规划您的GUI,并且可以更轻松地按照您想要的方式创建它。