2011-12-29 1 views
0

私の状況は簡単です:マルチビューアプリケーションにSWTを使用する。 Androidアクティビティのライフサイクルに似ています

ウェブサイトのように動作するウェブ風のJavaアプリケーション(これは一種のPOSアプリケーションです)を作成しようとしていますが、すべてJavaで書かれています。今はEclipseで書かれた半単純なSWTアプリケーションがあり、いくつかのオプション(サインイン、価格チェック、在庫確認、従業員タイムクロック)が表示されます。これらのいずれかが押されるか、対応するキーボードショートカットがアクティブになると、認証を促すダイアログボックスが表示されます。ユーザーが確認されたと仮定して、メインアプリケーションウィンドウに新しい機能のセット(アイテムのスキャン、アイテムの参照など)をシームレスに表示する必要があります。

これがHTMLの場合、私は新しいページを作成します。Androidプラットフォームに対して書いていたら、私は新しいアクティビティを作成します...しかしこれは非常に新しく、関連情報

PS誰かが別のライブラリ/技術(Swing/AWTなど)が優れていると思うなら、私はSWTに設定されていません。

答えて

3

、あなたが新しいコントロールを作成し、最終的にはコンポジットの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); 

もう1つの解決方法は、CompositeStackLayoutを使用して、いくつかの事前定義された内容を前後に表示したい場合です。

+0

+1 - おそらくStackLayoutが最適なアイデアですが、積み重ね可能なコンポジットを使用してビュークラスを拡張しないように注意してください。 – Jules

1

Swing、AWTまたはSWTのどちらを使用するかはまったく選択です。個人的には、スイングが好きですが、SWTでも同じことができます。

あなたの苦境は、GUIの最初のことについて少し勉強する必要があります。 Javaデスクトップアプリケーションは、トップレベルコンテナ、通常は他のコンポーネント、ウィンドウ、ダイアログボックスなどを含むことができるJFrame(ウィンドウ)で構成されます。ここでは、認証情報の入力を求めるモーダルダイアログボックスをポップアップ表示します。ユーザーが認証されている場合は、コード内にボタンやテキストボックスなどを動的に作成し、必要な「新しい」外観を作成できます。

本格的なアプリケーションに入る前に、最初に簡単なGUIデザインの練習を始めることをお勧めしますか? http://docs.oracle.com/javase/tutorial/uiswing/のJava GUIチュートリアルを参考にしてください。

基本的なダイアログボックス、フォーム、コンポーネントをマスターしたら、GUIを計画する上でより良い立場にあり、必要な方法で簡単に作成できます。 SWTで

+0

ちょうど明確にする:あなたはスイングの方法を説明しています。これはSWT、特にRCPの場合とはかなり異なっています。 SWTにはJFrameはありません。また、多くの場合、ビューはサブクラス化することによって準備されます。 SWTではJPanelは使用できません。 – Jules

関連する問題