java界面问题

zr_dixuexiongying 2008-02-17 03:33:41
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public class TextField extends JFrame
{
private JLabel lbl1 = new JLabel("姓名");
private JLabel lbl2 = new JLabel("密码");
private JButton btnLogin = new JButton("登录");
private JButton btnExit = new JButton("退出");
private JPasswordField field1 = new JPasswordField(10);
private JTextField field2 = new JTextField(10);


public TextField(String title)
{
super(title);
Container container = getContentPane();
container.setLayout(new FlowLayout());

container.add(lbl1);
container.add(field2);

container.add(lbl2);
container.add(field1);

//注册时间监听器
HandEvent ev = new HandEvent();
field1.addActionListener(ev);
field2.addActionListener(ev);

container.add(btnLogin);
container.add(btnExit);

JDialog.setDefaultLookAndFeelDecorated(true);

btnLogin.addActionListener(ev);
btnExit.addActionListener(ev);

setSize(400,300);
setVisible(true);
}


public class HandEvent implements ActionListener
{
String output = " ";

public void actionPerformed(ActionEvent event)
{
if(event.getSource()==field2)
JOptionPane.showMessageDialog(null,"你的姓名是:"+event.getActionCommand());

else if(event.getSource()==field1)
JOptionPane.showMessageDialog(null,"密码是:"+event.getActionCommand());

else if(field1.getText().toString().equals("") & field2.getText().toString().equals(""))
{
JOptionPane.showConfirmDialog(TextField.this,"用户名和密码不能为空!!!","警告",JOptionPane.YES_NO_OPTION,JOptionPane.ERROR_MESSAGE);
}

else if(field2.getText().toString().equals(""))
{
JOptionPane.showConfirmDialog(TextField.this,"用户名不能为空!!!","警告",JOptionPane.YES_NO_OPTION,JOptionPane.ERROR_MESSAGE);
}

else if(field1.getText().toString().equals(""))
{
JOptionPane.showConfirmDialog(TextField.this,"密码不能为空!!!","警告",JOptionPane.YES_NO_OPTION,JOptionPane.ERROR_MESSAGE);
}

else if(event.getSource() == btnExit)
{
System.exit(0);
}
}
}

public static void main(String[] args)
{
JFrame.setDefaultLookAndFeelDecorated(true);
TextField fi = new TextField("Login");
fi.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
}

请问 一下大家我按退出按钮怎么不起做用啊!就是如果姓名和密码为空的话,还要弹出其他的对话框,而不是直接退出的!所以我觉得很奇怪!难道逻辑有什么问题吗!按道理说不论用户名和密码是否为空,只要已经点击了退出按钮,就应该退出啊!
...全文
145 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
乐乐不在这 2009-06-16
  • 打赏
  • 举报
回复
呵呵
rain_night 2008-02-17
  • 打赏
  • 举报
回复
将退出按钮的事件放到别的事件之前去:
即:
if(是否退出==退出){
退出
}else{
判断其他事件
}
枫叶rain 2008-02-17
  • 打赏
  • 举报
回复
else if(event.getSource() == btnExit)
{
System.exit(0);
}
把这个写成判断条件的第一个条件就好了
if(event.getSource() == btnExit)
{
System.exit(0);
}
其他的为else if
lanicetomas 2008-02-17
  • 打赏
  • 举报
回复
由于你是用同一个事件监听器,你把按钮的判断放在对文本的判断的前面就好了,因为你每次有actionPerformed时,你判断文本,并且成立,自然,你后面对按钮事件的判断语句不能执行了!
dracularking 2008-02-17
  • 打赏
  • 举报
回复
错了 和类名无关
不知道lz是要按“退出”按钮直接退出还是间接退出还是不退出还是其他什么

现在测试下来的情况是
1.只要用户名框和密码框有任一个为空 按退出按钮就会跳出对话框 无法退出
2.两者均不为空按退出有效 立即退出
3.按右上角X 不管什么情况 都直接退出

如果你要按退出键不管怎么样都退出就应该在回调函数的前几个if分支中加入退出代码
yiyi_wx 2008-02-17
  • 打赏
  • 举报
回复

else if (field1.getText().toString().equals("") &
field2.getText().toString().equals("")) {
JOptionPane.showConfirmDialog(TextField.this, "用户名和密码不能为空!!!",
"警告", JOptionPane.YES_NO_OPTION,
JOptionPane.ERROR_MESSAGE);
}

else if (field2.getText().toString().equals("")) {
JOptionPane.showConfirmDialog(TextField.this, "用户名不能为空!!!",
"警告", JOptionPane.YES_NO_OPTION,
JOptionPane.ERROR_MESSAGE);
}

else if (field1.getText().toString().equals("")) {
JOptionPane.showConfirmDialog(TextField.this, "密码不能为空!!!", "警告",
JOptionPane.YES_NO_OPTION,
JOptionPane.ERROR_MESSAGE);
}

你在这里做的判断就是如果为空弹出提示框啊
可以这样修改:
1、监听器中加一个判断,判断点击的是登录或是退出按钮,然后执行不同的操作
2、分别针对登录及退出做不同的监听器处理
dracularking 2008-02-17
  • 打赏
  • 举报
回复
把类(TextField)改个名字吧
它是现存的

62,614

社区成员

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

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