JAVA关于GUI编程的练习问题

创建一个窗口,有三个组件:

1.有一个列表,其选项是你所在电脑上的两个java源文件的名字。
当选择一个选项后,会在文本框显示所选java文件的全部内容。

2.有一个文本框和一个密码框:
当在密码框输入密码时,密码框显示回显字符,回车后,在文本框显示密码。
当在文本框输入信息后,将窗口的名字改为文本框输入的信息。

3.窗口的布局任选。


package java3.T9;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class LoginUI extends JFrame implements ActionListener,MouseListener{
    
    JLabel bgImg,lblAccount,lblPassword,lblReg,lblForgetPwd;
    JTextField txtAccount;
    JPasswordField txtPassword;
    JButton btnLogin,btnExit;
    
    public LoginUI() {
        setTitle("QQ登录");
        ImageIcon icon = new ImageIcon("upload/touxiang.png");
        //设置图标
        setIconImage(icon.getImage());
        
        //设置背景图片
        Icon bgIcon = new ImageIcon("upload/login.jpg");
        bgImg = new JLabel(bgIcon);
        //窗口的默认布局是边框布局
        //把bgImg设置的窗口
        add(bgImg);
        
        lblAccount = new JLabel("账号:",JLabel.RIGHT);
        lblPassword = new JLabel("密码:",JLabel.RIGHT);
        txtAccount = new JTextField(20);
        txtPassword = new JPasswordField(20);
        
        lblAccount.setBounds(78, 173, 50, 30);
        txtAccount.setBounds(128, 173, 194, 30);
        
        lblPassword.setBounds(78, 203, 50, 30);
        txtPassword.setBounds(128, 203, 194, 30);
        //设置密码框显示的字符
        txtPassword.setEchoChar('*');
        
        lblReg = new JLabel("注册账号");
        lblForgetPwd = new JLabel("找回密码");
        lblReg.setBounds(330, 170, 80, 30);
        lblForgetPwd.setBounds(330, 200, 80, 30);
        
        btnLogin = new JButton("登录(L)");
        //设置热键
        btnLogin.setMnemonic('L');
        btnExit = new JButton("关闭(C)");
        btnExit.setMnemonic('C');
        btnLogin.setBounds(128, 250, 80, 30);
        btnExit.setBounds(228, 250, 80, 30);
        
        //添加到bgImg里面
        bgImg.add(lblAccount);
        bgImg.add(txtAccount);
        bgImg.add(lblPassword);
        bgImg.add(txtPassword);
        bgImg.add(lblReg);
        bgImg.add(lblForgetPwd);
        bgImg.add(btnLogin);
        bgImg.add(btnExit);
        //为按钮添加事件
        btnLogin.addActionListener(this);
        btnExit.addActionListener(this);
        //添加鼠标事件
        lblReg.addMouseListener(this);
        lblForgetPwd.addMouseListener(this);
        //不允许改变窗口的大小
        setResizable(false);
        
        setSize(427,321);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        if(e.getSource() == lblReg) {
            //弹出注册窗口
//            new RegUI();
        }
        
    }
    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
        
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        
        if(e.getSource() == btnLogin) {
            JOptionPane.showMessageDialog(null, "登录成功");
        }else if(e.getSource() == btnExit) {
            System.exit(0);
        }
        
    }
    public static void main(String[] args) {
        new LoginUI();
    }
}