2012-02-21 10 views
0

次のスクリプトで読み取れないprintlnとは対照的に、返される値を取得するにはどうすればよいですか? 私はFilemaker内でGroovyを使用していますので、明示的に '答え'、つまりパスワードまたはTRUEを返す必要があります。また、正しいパスワードが入力されるまでコードを待機させる方法を理解していないようです。swingbuilderから値を返します

import groovy.swing.SwingBuilder 
import java.awt.event.ActionListener 
import java.awt.event.ActionEvent 
import static javax.swing.WindowConstants.DISPOSE_ON_CLOSE 

count = 2 
def answer 

SwingBuilder.build{ 
    frame(id:'root', title:'Enter your PASSWORD', location:[100,100], show:true, pack:true, defaultCloseOperation:DISPOSE_ON_CLOSE){ 
     //lookAndFeel 'nimbus' 
     flowLayout() 
     label('Password') 
     passwordField(id:'pass', columns:12) 
     button('click', actionPerformed:{ 
     ActionEvent e-> 
      if (pass.text == 'password'){ 
      optionPane().showMessageDialog(root, 'OK') 

      //RETURN something at this point only when I get here 

      dispose() 
      } else if (count == 1) { 
      optionPane().showMessageDialog(root, 'INCORRECT PASSWORD\nPROCEDURE HALTED', 'PASSWORD', 2) 
      dispose() 
      } else { 
      count-- 
      message = count ==1 ?'try':'tries' 
      optionPane().showMessageDialog(root, "${count} ${message} left", 'NOT VALID', 0) 
      }// end if 
      pass.text='' 
     }// end action 
     )// end button 
    } 
} 

答えて

1

ブールフィールドを追加しsuccessfulLoginと呼ばれ、pass.text.equals("password")

は、あなたが実際にあなたのフレームを見えるようにないときときtrueに設定しますか? JOptionPaneを使うだけでよいでしょう。

import javax.swing.JComponent 
import javax.swing.JPasswordField 
import javax.swing.JLabel 
import javax.swing.JOptionPane 

public boolean loginSuccessful() throws Exception { 
    final JPasswordField passwordField = new JPasswordField(); 
    final JComponent[] components = [new JLabel("Password"), passwordField]; 
    if (JOptionPane.showConfirmDialog(null, components, "Enter your PASSWORD", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE) == JOptionPane.OK_OPTION) { 
     // user clicked ok 
     if (new String(passwordField.getPassword()).equals("password")) { 
      // password matches 
      return true; 
     } 
    } 
    return false; 
} 
関連する問題