2013-10-15 4 views
0

installanywhere 2012를 사용하여 사용자 정의 대화 상자를 만드는 방법을 알고 싶습니다. 설치 프로그램을 installshiled에서 installanywhere로 마이그레이션하고 있습니다. 우리는 installshiled에서 많은 수의 사용자 정의 대화 상자를 사용했습니다. 이제는 IA 2013에서 동일한 내용을 변경해야합니다. IA를 처음 사용했습니다. 도와주세요.installanywhere에서 사용자 정의 대화 상자를 만드는 방법은 무엇입니까?

감사합니다, 나는 N InstallAnywhere의 그네와 AWT를 사용하여 설계 할 수 Thananjeyan

+0

GUI를 작성하고 컴파일하고 IA에서 customPanel 코드로 호출 할 때 Java 스윙을 사용해야합니다 – Thananjeyan

답변

0

모든 화면.

import com.zerog.ia.api.pub.CustomCodePanel; 
import com.zerog.ia.api.pub.CustomCodePanelProxy; 

import java.awt.*; 
import java.util.Map; 
import java.util.HashMap; 

import javax.swing.JLabel; 
import javax.swing.JTextArea; 
import javax.swing.border.LineBorder; 

public class JDBCParamsPanel extends CustomCodePanel{ 

    private boolean inited = false; 
    private Font plainFont; 
    private Font boldFont; 
    private Map<String, TextField> varName2TextField = new HashMap<String, TextField>(); 
    String databaseType = ""; 

    @Override 
    public boolean setupUI(CustomCodePanelProxy customCodePanelProxy) { 
     if(!inited){ 
      final String fontName = "Dialog"; 
      LineBorder border = new LineBorder(Color.GRAY, 1, true); 
      final int fontSize = System.getProperty("os.name").contains("Windows") ? 12 : 8; 
      plainFont = new Font(fontName, Font.PLAIN, fontSize); 
      boldFont = new Font(fontName, Font.BOLD, fontSize); 
      setLayout(new BorderLayout(20, 1)); 
      JTextArea topPrompt = new JTextArea(
        "Please enter the following parameters that ABC will use\n" 
          + "to connect to the database"); 
      topPrompt.setRows(7); 
      topPrompt.setBorder(border); 
      databaseType = (String) customCodePanelProxy.getVariable("$DATABASE_TYPE$"); 
      System.out.println("databaseType::: "+databaseType); 
      topPrompt.setEditable(false); 
      topPrompt.setFont(plainFont); 
      Panel topPanel = new Panel() { 
       public Insets getInsets() { 
        // return new Insets(10, 10, 10, 10); 
        return new Insets(7, 1, 4, 10); 
       } 
      }; 
      topPanel.setSize(1, 50); 
      topPanel.setLayout(new BorderLayout()); 
      topPanel.add(topPrompt, BorderLayout.CENTER); 
      add(topPanel, BorderLayout.NORTH); 
      Panel dataEntryPanel = new Panel(); 
      add(dataEntryPanel, BorderLayout.CENTER); 
      dataEntryPanel.setLayout(new GridBagLayout()); 
      GridBagConstraints gbc = new GridBagConstraints(); 
      gbc.anchor = GridBagConstraints.NORTHEAST; 
      gbc.weightx = 1.0; 
      gbc.weighty = 1.0; 
      gbc.gridx = 0; 
      gbc.gridy = 0; 
      gbc.insets = new Insets(5, 2, 8, 10); 
      gbc.fill = GridBagConstraints.BOTH; 
      dataEntryPanel.add(makeEntryPanel(customCodePanelProxy 
        .getValue("PromptUserConsole.Host"), "$DB_HOST$", false, 100), gbc); 

      gbc.gridy = 1; 
      dataEntryPanel.add(makeEntryPanel(customCodePanelProxy 
        .getValue("PromptUserConsole.Port"), "$DB_PORT$", false, 102), gbc); 

      gbc.gridy = 2; 
      dataEntryPanel.add(makeEntryPanel(customCodePanelProxy 
        .getValue("PromptUserConsole.Database_Name"), "$DB_NAME$", false, 36), gbc); 

      gbc.gridy = 3; 
      dataEntryPanel.add(makeEntryPanel(customCodePanelProxy 
        .getValue("PromptUserConsole.User"), "$DB_USER$", false, 99), gbc); 

      gbc.gridy = 4; 
      dataEntryPanel.add(makeEntryPanel(customCodePanelProxy 
        .getValue("PromptUserConsole.Password"), "$DB_PASSWORD$", true, 68), gbc); 


      inited=true; 
     } 
     return true; 
    } 

    private Panel makeEntryPanel(String labelText, String varName, boolean useEchoChar, int hgap) { 
     Panel panel = new Panel(new BorderLayout(hgap, 1)); 
     panel.add(makeStarLabel(labelText), BorderLayout.WEST); 
     TextField tf = new TextField(); 
     tf.setFont(plainFont); 
     tf.setCaretPosition(Integer.MAX_VALUE); 
     if (useEchoChar) { 
      tf.setEchoChar('*'); 
     } 
     panel.add(tf, BorderLayout.CENTER); 
     varName2TextField.put(varName, tf); 
     return panel; 
    } 

    private Label makeLabel(String text) { 
     Label label = new Label(text, Label.RIGHT); 
     label.setFont(boldFont); 
     return label; 
    } 

    private JLabel makeStarLabel(String text) { 
     JLabel label = new JLabel(text, Label.RIGHT); 
     label.setText("<html>" + text + "<font color=FF0000>*</font> </html>"); 
     label.setFont(boldFont); 
     return label; 
    } 

    public String getTitle() { 

     return "JDBC Parameters"; 
    } 

    @Override 
    public void panelIsDisplayed() { 
     populate("$DB_HOST$"); 
     populate("$DB_PORT$"); 
     populate("$DB_NAME$"); 
     populate("$DB_USER$"); 
     populate("$DB_PASSWORD$"); 

    } 

    private void populate(String varName) { 
     TextField tf = varName2TextField.get(varName); 
     String value = (String) customCodePanelProxy.getVariable(varName); 
     tf.setText(value); 
    } 

    @Override 
    public boolean okToContinue() { 
     for (Map.Entry<String, TextField> entry : varName2TextField.entrySet()) { 
      String varName = entry.getKey(); 
      TextField tf = entry.getValue(); 
      String value = tf.getText().trim(); 
      customCodePanelProxy.setVariable(varName, value); 
     } 
     return true; 
    } 

} 

위의 코드는 5 텍스트 입력 필드와 패널을 구성한다 : 당신은 가져

샘플 코드는 다음과 같습니다 CustomCodePanel을 확장 할 필요가있다. 위의 내용을 참조하고 요구 사항에 따라 사용자 정의 패널을 작성할 수 있습니다.

관련 문제