真假问题

daryzhang 2010-02-03 07:20:25
学编程时间不长,还没看设计模式,对下面这个程序中的 ok 真假的转换实在弄不明白

我的理解是 当okButton点击时 ok 为真
当有对象调用showDialog时 ok 是先变假 最后return ok 的时候 不一直应该是假吗?
可我在后面的程序中有看到 showDialog好像有变真的时候 请高人指点。谢谢

class PasswordChooser extends JPanel {
private JTextField username;
private JPasswordField password;
private JButton okButton;
private JDialog dialog;
private boolean ok;

public PasswordChooser() {
setLayout(new BorderLayout());

JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2, 2));
panel.add(new JLabel("UserName: "));
panel.add(username = new JTextField(""));
panel.add(new JLabel("Password: "));
panel.add(password = new JPasswordField(""));
add(panel, BorderLayout.CENTER);

okButton = new JButton("OK");
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
ok = true;
dialog.setVisible(false);
}
});

JButton cancelButton = new JButton("Cancel");
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
dialog.setVisible(false);
}
});

JPanel buttonPanel = new JPanel();
buttonPanel.add(okButton);
buttonPanel.add(cancelButton);
add(buttonPanel, BorderLayout.SOUTH);
}
public void setUser(User u) {
username.setText(u.getName());
}
public User getUser() {
return new User(username.getText(), password.getPassword());
}
public boolean showDialog(Component parent, String title) {
ok = false;
Frame owner = null;

if(parent instanceof Frame)
owner = (Frame) parent;
else
owner = (Frame) SwingUtilities.getAncestorOfClass(Frame.class, parent);

if(dialog == null || dialog.getOwner() != owner) {
dialog = new JDialog(owner, true);
dialog.add(this);
dialog.setLocation(370, 300);
dialog.getRootPane().setDefaultButton(okButton);
dialog.pack();
}
dialog.setTitle(title);
dialog.setVisible(true);
return ok;
}
}
...全文
141 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
daryzhang 2010-02-04
  • 打赏
  • 举报
回复
那if里面的 真 是通过哪实现的呢?

  • 打赏
  • 举报
回复
现在真
daryzhang 2010-02-04
  • 打赏
  • 举报
回复
那大家的意思是 当启动showDialog的时候 ok一直是假?
但要是这样的话
private class ConnectListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(pc == null)
pc = new PasswordChooser();
pc.setUser(new User("\"Guest\"", null));
if(pc.showDialog(ExchangeF.this, "Connect")) {
User u = pc.getUser();
jta.append("Username: " + u.getName() + ", Password: " +
new String(u.getPassword()) + "\n");
}
}
} 这个里面的红色那句不是应该没有为真的时候了? 可是应该有啊
wenjjing2lianee 2010-02-04
  • 打赏
  • 举报
回复
up
bobo364 2010-02-04
  • 打赏
  • 举报
回复

okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
ok = true;
dialog.setVisible(false);
}



public boolean showDialog(Component parent, String title) {
ok = false;
Frame owner = null;



根据这2段代码,显示了当ok button按下是ok为true,但下面段程序启动时ok为false

Z_FEI 2010-02-04
  • 打赏
  • 举报
回复
可我在后面的程序中有看到 showDialog好像有变真的时候

看是先点击botton还是先调用showDialog!先后顺序不一样,自然结果也不一样
daryzhang 2010-02-04
  • 打赏
  • 举报
回复
上班没事的帮忙讲讲 啊
bawgiitx 2010-02-03
  • 打赏
  • 举报
回复
抢位咯
JavaAlpha 2010-02-03
  • 打赏
  • 举报
回复
private boolean ok; 


初始 默认是 false

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧