Java的awt,我想知道,每触发一个按钮,弹出来一个子窗体,

我想知道,每触发一个按钮,弹出来一个子窗体,该页面的任务栏是怎么做的?用了什么方法,还是某个类,

使用按钮的action事件,实现ActionLinster接口,new 窗口类就可以了。

 

登录界面

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();
	}
}

点击注册,弹出注册窗口

package java3.T9;

import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/*
 * Swing所在的包:java.swing
 * 	1.常用组件的使用
 * */
public class RegUI extends JFrame implements ActionListener{
	
	//姓名,年龄
	JTextField txtUserName,txtAge; //文本框
	//学历,民族,星座
	JComboBox cbDegree,cbNation,cbStar; //下拉列表框
	//性别
	JRadioButton rbMale,rbRemale; //多选框
	//兴趣爱好
	JCheckBox cbFootball,cbBasketBall,cbNet,cbWatch; //多选框
	//备注
	JTextArea txtRemark; //文本区域框
	//注册,关闭
	JButton btnSave,btnClose; //按钮
	
	//定义学历数组
	String degreeArr[] = {"小学","初中","高中","大专","本科","研究生","博士"};
	//定义民族数组
	String nationArr[] = {"汉族","苗族","藏族","高山族","朝鲜族","畲族","壮族","其他"};
	//定义星座数组
	String starArr[] = {"双鱼座","处女座","狮子座","金牛座","巨蟹座","天秤座","水瓶座","双子座","白羊座","天蝎座","摩羯座","射手座"};
	public RegUI() {
		
		super("注册用户");
		//设置布局为绝对布局
		setLayout(null);
		//工具类
		Toolkit kit = Toolkit.getDefaultToolkit();
		Image image = kit.getImage("upload/qq.jpg");
		//设置窗口图标
		setIconImage(image);

//		ImageIcon icon = new ImageIcon("upload/qq.jpg");
//		setIconImage(icon.getImage());
		
		JLabel lblTitle,lblUserName,lblAge,lblDegree,lblNation,lblStar,lblSex,lblHover,lblRemark;
		lblTitle = new JLabel("用户注册",new ImageIcon("upload/qq.jpg"),JLabel.CENTER);
		Font font = new Font("宋体",Font.BOLD,20);
		lblTitle.setFont(font);		
		lblTitle.setBounds(0, 10, 500, 30);
		lblTitle.setForeground(Color.RED);
		//添加到窗口
		add(lblTitle);
		
		lblUserName = new JLabel("用户名称",JLabel.RIGHT);
		txtUserName = new JTextField(20); //默认显示的字符数
		//设置控件在窗口的位置
		lblUserName.setBounds(80, 50, 100, 20);
		txtUserName.setBounds(180, 50, 200, 20);
		//添加控件到窗口指定位置显示
		add(lblUserName);
		add(txtUserName);
		lblAge = new JLabel("年龄",JLabel.RIGHT);
		txtAge = new JTextField(20);
		lblAge.setBounds(80, 80, 100, 20);
		txtAge.setBounds(180, 80, 200, 20);
		add(lblAge);
		add(txtAge);
		
		lblDegree = new JLabel("学历",JLabel.RIGHT);
		//学历控件中显示的是数组的值
		cbDegree = new JComboBox(degreeArr);
		
		lblDegree.setBounds(80, 110, 100, 20);
		cbDegree.setBounds(180, 110, 200, 20);
		add(lblDegree);
		add(cbDegree);
		
		lblNation = new JLabel("民族",JLabel.RIGHT);
		//民族控件中显示的是数组的值
		cbNation = new JComboBox(nationArr);
		
		lblNation.setBounds(80, 140, 100, 20);
		cbNation.setBounds(180, 140, 200, 20);
		add(lblNation);
		add(cbNation);
		
		lblStar = new JLabel("星座",JLabel.RIGHT);
		//民族控件中显示的是数组的值
		cbStar = new JComboBox(starArr);
		
		lblStar.setBounds(80, 170, 100, 20);
		cbStar.setBounds(180, 170, 200, 20);
		add(lblStar);
		add(cbStar);
		
		lblSex = new JLabel("性别",JLabel.RIGHT);
		rbMale = new JRadioButton("男");
		rbRemale = new JRadioButton("女");
		//同一组的单选框必须添加到一个ButtonGroup组件
		ButtonGroup gb = new ButtonGroup();
		gb.add(rbMale);
		gb.add(rbRemale);
		lblSex.setBounds(80, 200, 100, 20);
		rbMale.setBounds(180, 200, 50, 20);
		//默认选中
		rbMale.setSelected(true);
		rbRemale.setBounds(230, 200, 50, 20);
		add(lblSex);
		add(rbMale);
		add(rbRemale);
		
//		cbFootball,cbBasketBall,cbNet,cbWatch
		lblHover = new JLabel("兴趣爱好",JLabel.RIGHT);
		cbFootball = new JCheckBox("足球");
		cbBasketBall = new JCheckBox("篮球");
		cbNet = new JCheckBox("上网");
		cbWatch = new JCheckBox("看书");
		lblHover.setBounds(80, 230, 100, 20);
		cbFootball.setBounds(180, 230, 60, 20);
		cbBasketBall.setBounds(240, 230, 60, 20);
		cbNet.setBounds(300, 230, 60, 20);
		cbWatch.setBounds(360, 230, 60, 20);
		add(lblHover);
		add(cbFootball);
		add(cbBasketBall);
		add(cbNet);
		add(cbWatch);
		
		lblRemark = new JLabel("备注",JLabel.RIGHT);
		txtRemark = new JTextArea(5, 80);
		lblRemark.setBounds(80, 260, 100, 20);
		txtRemark.setBounds(80,290, 330, 100);
		
		add(lblRemark);
		JScrollPane bar = new JScrollPane(txtRemark);
		bar.setBounds(80,290, 330, 100);
		add(bar);
		
		btnSave = new JButton("注册(S)");
		//设置热键(先按住ALT键+S)
		btnSave.setMnemonic('S');
		btnClose = new JButton("关闭(X)");
		//设置热键(先按住ALT键+X)
		btnClose.setMnemonic('X');
		btnSave.setBounds(250,430, 100, 30);
		btnClose.setBounds(360,430, 100, 30);
		//注册按钮事件
		btnClose.addActionListener(this);
		btnSave.addActionListener(this);
		
		add(btnSave);
		add(btnClose);
		setSize(500,500);
		setVisible(true);
		//DISPOSE_ON_CLOSE,关闭当前窗口,但不退出程序
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setLocationRelativeTo(null);
	}
	//Action事件
	@Override
	public void actionPerformed(ActionEvent e) {
		
		if(e.getSource() == btnSave) {
			//弹出对话框
			JOptionPane.showMessageDialog(null, "你点击了注册按钮");
		}else if(e.getSource() == btnClose) {
			JOptionPane.showMessageDialog(null, "你点击了关闭按钮");
			//退出程序
//			System.exit(0);
			//关闭窗口
//			setVisible(false);
			dispose();
		}
	}
	public static void main(String[] args) {
		new RegUI();
	}

	
}

 

//实例化按钮对象
		Button bz=new JButton("帮助");
		//设置按钮的位置
		bz.setBounds(5, 370, 90, 20);
		//给按钮注册动作事件监听
		bz.addActionListener(this);

@Override
	public void actionPerformed(ActionEvent e) {

        if(e.getSource()==bz){
			new Help();
		}
    }

package gz.ht.edu;

import java.awt.Container;

import javax.swing.Frame;
import javax.swing.Label;

public class Help extends Frame{
	public Help(){
		//设置标题
		super("帮助界面");
		//设置窗口大小
		this.setSize(400, 300);
		//设置窗口可见
		this.setVisible(true);
	}
}

大致代码如上,万望采纳

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632