随堂练习

实验目的:

  • 1.掌握Swing常用的组件的使用;
  • 2.掌握程序界面开发的步骤;
  • 3.掌握事件监听器的使用。

实验内容:
在文本框中输入姓名,选择性别(单选)、爱好(可多选)、未来职业(下拉框),单击“确定”按钮,弹出消息提示框

未来职业的下拉框:
在这里插入图片描述
界面信息:
在这里插入图片描述
输入信息点击确定:
图2
源代码

package demo;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
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.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

public class Login extends JFrame implements ActionListener{
	
	JLabel jl1 = new JLabel("姓名:");//标签
	JTextField jtf1 = new JTextField(15);
	
	//性别-->单选框

    JLabel sexLabel = new JLabel("性别:");//标签

    JRadioButton man = new JRadioButton("男");

    JRadioButton woman = new JRadioButton("女");

    //如果是单选框 必须要进行分组 同一个组的单选框 只能选择其中一个

    ButtonGroup group = new ButtonGroup();
    
    //兴趣爱好-->复选框

    JLabel hobbyLabel = new JLabel("爱好:");

    JCheckBox checkbox1 = new JCheckBox("音乐");  

    JCheckBox checkbox2 = new JCheckBox("运动");

    JCheckBox checkbox3 = new JCheckBox("上网");

    //未来职业
    JLabel jobLabel=new JLabel("未来职业:");
    JComboBox<String> job = new JComboBox<String>();//下拉框

	
	JButton jb1 = new JButton("确定");//按钮
	JButton jb2 = new JButton("取消");
	
	JPanel jp1 = new JPanel();//容器
	JPanel jp2 = new JPanel();
	JPanel jp3 = new JPanel();
	JPanel jp4 = new JPanel();
	JPanel jp5 = new JPanel();
	
	

	public Login() {
		this.setLayout(new GridLayout(5,1));
		this.setTitle("兴趣爱好选择");
		this.setBounds(400, 400, 600, 400);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		jp1.add(jl1);//第一行放入容器1
		jp1.add(jtf1);
		
		jp2.add(sexLabel);//单选框
		jp2.add(man);
		jp2.add(woman);
		man.setActionCommand("男");
		woman.setActionCommand("女");
		group.add(man);
		group.add(woman);
		
		jp3.add(hobbyLabel);//爱好
	    jp3.add(checkbox1);
	    jp3.add(checkbox2);
	    jp3.add(checkbox3);
	    
	    jp4.add(jobLabel);//职业
	    jp4.add(job);
	    job.addItem("软件工程师");
	    job.addItem("经济专家");
	    job.addItem("老师");
	    job.addItem("创业");
	    
		jp5.add(jb1);//按钮
		jp5.add(jb2);
		
		
		this.add(jp1);
		this.add(jp2);
		this.add(jp3);
		this.add(jp4);
		this.add(jp5);
		
		this.man.addActionListener(this);//注册监听器
		this.woman.addActionListener(this);
		this.checkbox1.addActionListener(this);
		this.checkbox2.addActionListener(this);
		this.checkbox3.addActionListener(this);
		this.job.addActionListener(this);
		this.jb1.addActionListener(this);
		this.jb2.addActionListener(this);
		
	}

	public static void main(String[] args) {
		Login login  = new Login();//实例
		login.setVisible(true);//可见性

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==jb1) {
			String hobby ="";
			String name=jtf1.getText();//获取文本框中的姓名
			String sex=group.getSelection().getActionCommand();//getSelection()返回所选按钮的型号,getActionCommand()获取事件相关信息
			if(checkbox1.isSelected()) hobby+=checkbox1.getText()+" ";
			if(checkbox2.isSelected()) hobby+=checkbox2.getText()+" ";
			if(checkbox3.isSelected()) hobby+=checkbox3.getText()+" ";
			String job1=(String)job.getSelectedItem();
			String str="我是"+name+"\n性别:"+sex+"\n爱好:"+hobby+"\n未来职业:"+job1;
			JOptionPane.showMessageDialog(this,str);
		}
		else if(e.getSource()==jb2) {
			System.exit(0);
		}
		
	}

}

需要解决的问题:
(1)两个按钮绑定同一个监听器,如何判断用户单击了哪个按钮?

  • 通过getSource()方法获取监听的源按钮是哪一个,从而判断用户按了哪一个按钮。

(2)如何判断单选按钮、复选框的选中状态及标题文本的获取?

  • 单选按钮:通过按钮组的getSelection()方法获取到选择的按钮,再通过getActionCommand()获取按钮信息,从而获得选中状态
  • 复选框:对复选框中每一项用isSelected()方法判断是否被选取,即可获得选中状态
  • 标题文本:通过文本框的getText()方法获取标题文本信息

(3)如何退出Java程序?

  • 点击退出按钮(System.exit(0)😉,或者点击右上角×按钮

在学霸的帮助下完成了本次任务,唉~觉得自己好菜啊!o(╥﹏╥)o,还好有CSDN,有同学,还是要继续加油!

小白句子分享

  • “你向一个方向走了很多年,山重水复,什么障碍都越过,却可能在平原轻易迷失自己。”——林达《一路走来一路读》
  • “沉默会自我繁衍。越长时间不说话,就越难找到可说的话题。同理,事情搁置的时间越长,就难以讨论。”——伊维塔·泽鲁巴维尔《房间里的大象》
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐