使用啟動應用程式自動機制設定環境變數
本主題提供了一個在「啟動應用程式」自動機制節點中使用運算式的範例,該範例能夠啟動執行檔,並將參數傳給啟動的應用程式。
參考的工作流程
ApplicationLaunchExample.xml
描述
此「啟動應用程式」自動機制節點可以用來啟動可執行檔,並將參數傳送到已啟動的應用程式。以下的指令行會執行一個 Java 類別,並將其傳送給三個字串引數。本例會將含有此指令行的「啟動應用程式」自動機制節點定義為非同步。
指示
1. 在範本中建立三個字串變數:name、date 和 message。賦予其初始值。請注意,若要將多個字指派給變數,您必須將其括入引號 (") 中。例如,若要將「嗨,最近好嗎」指派為變數訊息,您可以將值指定為「嗨,最近好嗎」。
2. 在「應用程式」自動機制中建立名為 classpath 的環境變數,並將其值設定為您電腦上的 jdk 資料夾,以及存放 Java 類別的資料夾。
3. 使用此程式碼 (「Java 檔案的程式碼」) 建立 Java 檔案,然後編譯它。請確定其路徑已在上述的 classpath 變數中。
4. 複製下述的程式碼:
java MessageDisplay {name} {date} {message}
Java 檔案的程式碼
import java.awt.*;
import java.awt.event.*
public class MessageDisplay extends Frame{
public MessageDisplay( ) {
//{{ INIT_CONTROLS
setLayout(null );
setSize(628,389);
label1 = new java.awt.Label( "Hello", Label.RIGHT );
label1.setBounds(108,36,103,22);
label1.setFont(new Font( "Dialog", Font.BOLD , 16));
add(label1);
label2 = new java.awt.Label( "Date", Label.RIGHT );
label2.setBounds(103,72,103,24);
label2.setFont(new Font( "Dialog", Font.BOLD , 16));
add(label2);
label3 = new java.awt.Label( "Message", Label.RIGHT );
label3.setBounds(103,108,103,27);
label3.setFont(new Font( "Dialog", Font.BOLD , 16));
add(label3);
TFName = new java.awt.TextField( );
TFName.setBounds(228,24,280,28);
add(TFName );
TFDate = new java.awt.TextField( );
TFDate.setBounds(228,60,276,26);
add(TFDate );
TAMessage = new java.awt.TextArea( );
TAMessage.setBounds(228,96,285,164);
add(TAMessage );
OK = new java.awt.Button( );
OK.setLabel( "OK");
OK.setBounds(312,276,70,25);
OK.setBackground(new Color(12632256));
add(OK );
LError = new java.awt.Label( "Wrong number of arguments. Please rerun with 3 arguments ");
LError.setVisible(false );
LError.setBounds(12,324,601,29);
LError.setFont(new Font( "Dialog", Font.BOLD , 16));
add(LError );
setTitle( "Untitled");
//}}
//{{ REGISTER_LISTENERS
SymWindow aSymWindow = new SymWindow( );
this.addWindowListener(aSymWindow );
SymAction lSymAction = new SymAction( );
OK.addActionListener(lSymAction );
//}}
}
public MessageDisplay(String title)
{
this( );
setTitle(title );
}
public void setVisible(boolean b)
{
if(b )
{
setLocation(50, 50);
}
super.setVisible(b );
}
static public void main(String args[ ])
{
MessageDisplay myFrame = new MessageDisplay( );
myFrame.setVisible(true );
myFrame.displayMessage(args );
}
public void addNotify( )
{
// Record the size of the window prior to calling parents addNotify .
Dimension d = getSize( );
super.addNotify( );
if ( fComponentsAdjusted )
return;
// Adjust components according to the insets
setSize(insets( ).left + insets( ).right + d.width , insets( ).top + insets( ).bottom + d.height );
Component components[ ] = getComponents( );
for (int i = 0; i < components.length i++ )
{
Point p = components[i ]. getLocation( );
p.translate(insets( ).left, insets( ).top);
components[i ]. setLocation(p );
}
fComponentsAdjusted = true;
}
// Used for addNotify check.
boolean fComponentsAdjusted = false;
//{{ DECLARE_CONTROLS
java.awt.Label label1;
java.awt.Label label2;
java.awt.Label label3;
java.awt.TextField TFName
java.awt.TextField TFDate
java.awt.TextArea TAMessage
java.awt.Button OK;
java.awt.Label LError
//}}
class SymWindow extends java.awt.event.WindowAdapter
{
public void windowClosing(java.awt.event.WindowEvent event)
{
Object object = event.getSource( );
if (object == MessageDisplay.this )
MessageDisplay_WindowClosing(event );
}
}
void MessageDisplay_WindowClosing(java.awt.event.WindowEvent event)
{
setVisible(false ); // hide the Frame
}
public void displayMessage(String args[ ]){
if ( args.length < 2){
LError.setVisible(true );
LError.setText( "Wrong number of arguments. Please rerun with 2 arguments");
}
else {
LError.setVisible(false );
TFName.setText(args[0]);
TFDate.setText(args[1]);
TAMessage.setText(args[2]);
}
}
class SymAction implements java.awt.event.ActionListener
{
public void actionPerformed(java.awt.event.ActionEvent event)
{
Object object = event.getSource( );
if (object == OK)
OK_ActionPerformed(event );
}
}
void OK_ActionPerformed(java.awt.event.ActionEvent event)
{
setVisible(false );
system.exit(0)
}
}