在下面的脚本中,我如何获得一个返回值,而不是我无法读取的println?我在Filemaker中使用Groovy,所以我需要一个显式的返回‘答案’,即密码或TRUE,而我似乎不明白如何让代码等待,直到它最终输入正确的密码。
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
}
}发布于 2012-02-22 01:26:17
添加一个名为successfulLogin的布尔型字段,并将其设置为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;
}https://stackoverflow.com/questions/9376186
复制相似问题