GUI追加

この例では新しいオーダーを送信する度に警告ダイアログを表示させるGUI(グラフィカル・ユーザー・インターフェース)を追加します。
ダイアログは作成したオーダーのラベルをメッセージテキストで表示します。
ダイアログを閉じる前に新しいオーダーが発生した場合は、ダイアログのメッセージテキストを新しいオーダーのラベルに変更します。
以前作成したFeeds.javaを変更して作成します。

初めに、GUI用の新しいインポートを追加します。
JDialogオブジェクトを使用します、JOptionPaneオブジェクト(JDialogのコンテンツ)も使用します。



import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;



ダイアログ用のインスタンス変数を宣言します。



private boolean dialogClosed = true;
private JOptionPane optionPane = new JOptionPane(null, JOptionPane.WARNING_MESSAGE);
private JDialog dialog = optionPane.createDialog( null, null ) ;



デフォルトでは、ダイアログが開かれている状態ではプラットフォームへのアクセスはブロックされます。
モーダル(子ウィンドウ)ダイアログを作らないようにするには、onStartメソッドに以下コードを追加します。




dialog.setModal( false );



onDataFeedメソッドからshowNotificationメソッドを呼び出すダイアログを表示します。
新しいオーダーが作成されると、showNotificationメソッドが呼ばれます。
コードの一部を紹介すると以下の通りです




// ..
if (currentSMADirection != previousSMADirection) {
    previousSMADirection = currentSMADirection;
    IOrder newOrder = engine.submitOrder("MyStrategyOrder" + uniqueOrderCounter++, myInstrument, myCommand,
                                          0.001, 0, 1, stopLossPrice, takeProfitPrice);
    createdOrderMap.put(newOrder, false);

    // ダイアログを表示するメソッドを呼び出します
    SwingUtilities.invokeLater( new Runnable(){
        public void run(){
            showNotification();
        }
    });
//..



showNotificationメソッド新しいオーダーが作成される(古いダイアログが閉じられている時)度にダイアログを表示し、
古いダイアログが閉じられていない場合は、既存のダイアログメッセージを変更します。

ダイアログが閉じられていない場合は、ダイアログのイベントを確認するロジックを追加します。
このケースではウインドウのクローズイベントを確認します。
ダイアログウインドウが閉じられていたら、dialogClosed変数にfalseを設定します。




private void showNotification(){        
    String message = "MyStrategyOrderオーダーは" + (uniqueOrderCounter -1) + "回作成されました。";      

    if( dialogClosed ){            
        dialog.addComponentListener(new ComponentAdapter() {
            public void componentHidden(ComponentEvent e){
                dialogClosed = true;
            }
        });          
        optionPane.setMessage(message);
        dialog.setVisible(true);
        dialogClosed = false;                      
    } else {
        optionPane.setMessage(message);            
        dialog.validate();
    }        
}



サンプルソースコード:FeedsGUI.java


ストラテジーを実行している時、新しい警告ダイアログが表示されます。
ダイアログを閉じると、次のオーダー送信で新しいダイアログが表示されます。
新しいオーダーが送信される前にダイアログを閉じなかった場合、ダイアログのメッセージが変更されます。






JDialogJava swingオブジェクト の詳細についてはJavaのサイトを参照して下さい。




スポンサーリンク

スポンサーリンク
検索
リファレンスツリー


Copyright ©2016 JForexAPIで自動売買させ隊! All Rights Reserved.


Top

inserted by FC2 system