(初学)GUI(二、代码部分)

1、创建容器和面板

package day05;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

//JFrame窗口应用
public class JFrameDemo {
	public static void main(String[] args) {
		//创建窗口对象
		JFrame frame=new JFrame("用户注册");
		//设置窗口大小
		frame.setSize(600,600);
		//设置窗口关闭时退出运行程序
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//设置窗口的显示的位置
		frame.setLocationRelativeTo(null);
		
		//创建面板对象 Jpanel(容器
		JPanel panel=new JPanel();
		//创建JLabel的标签,JLabel是组件
		JLabel label=new JLabel("用户名");
		//向面板添加组件
		panel.add(label);
		//将面板添加到窗口
		frame.add(panel);
		//显示窗口
		frame.setVisible(true);
	}
}

测试:
在这里插入图片描述

2、改进

更多时候主函数最好不要写这么多内容,因此可将面板另起一类进行编写。同时通过测试类进行测试(启动类)。
代码如下
窗口类(添加组件等):

package day05;

import java.awt.Color;
import java.awt.Dimension;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToggleButton;

public class MyFrame extends JFrame{
	public MyFrame() {
		//创建面板JPanel
		JPanel p=new JPanel();
		//向面板添加组件
		JLabel label=new JLabel("用户名:");
		label.setPreferredSize(new Dimension(60,30));
		//设置背景为不透明
		label.setOpaque(true);
		//设置背景颜色
		label.setBackground(Color.gray);
		//20表示一个字符的计算单位,并不是表示字符个数
		JTextField textField=new JTextField(20);
		textField.setPreferredSize(new Dimension(0,35));
		
		//创建JBUTTON对象
		JButton btn=new JButton("登录");	
		//创建单选按钮
		JRadioButton rb=new JRadioButton("男");
		JRadioButton rb1=new JRadioButton("女");
		//添加复选框
		JCheckBox chb=new JCheckBox("听音乐");
		JCheckBox chb1=new JCheckBox("唱歌");
		JCheckBox chb2=new JCheckBox("看电影");
		JCheckBox chb3=new JCheckBox("睡觉");
		//添加下拉列表<E> <>泛型 E占位符
		JComboBox<String> jcb=new JComboBox<String>();
		//给下拉列表添加数据项
		jcb.addItem("珠海市");
		jcb.addItem("如皋市");
		jcb.addItem("广州市");
		
		//添加密码输入框
		JPasswordField password=new JPasswordField("密码");
		//设置密码输入框的宽度
		password.setPreferredSize(new Dimension(100,30));
		//添加这个JLabel到密码输入框的前面
		JLabel label1=new JLabel("请输入密码");
		//创建开关对象
		JToggleButton btn2=new JToggleButton("开关");
		//JTextArea
		JTextArea area=new JTextArea("这是文本框");	
		area.setPreferredSize(new Dimension(100,100));
		//给文本域添加内容
		area.setText("今天是个好日子");
		//DefaultListModel<String> listModel=new DefaultListModel<>();
		String[] data= {"小明","小刘","小芳"};
		
		//创建列表对象
		JList<String> jList=new JList<String>();
		//给jList添加数据
		
		jList.setPreferredSize(new Dimension(200,200));
		//将两个组件添加到面板中
		p.add(label);
		p.add(textField);
		p.add(btn);
		p.add(rb);
		p.add(rb1);
		p.add(chb);
		p.add(chb1);
		p.add(chb2);
		p.add(chb3);
		p.add(jcb);
		p.add(label1);
		p.add(password);
		p.add(btn2);
		p.add(area);
		p.add(jList);
		//this表示当前类对象
		this.add(p);
		
		
	}
}

启动类(用于测试):

package day05;

import javax.swing.JFrame;

public class TestFrame01 {
	public static void main(String[] args) {
		//创建窗口
		MyFrame mf=new MyFrame();
		//给窗口设置标题
		mf.setTitle("用户登录");
		mf.setSize(400, 300);
		mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		mf.setVisible(true);
		
	}
}

测试:
在这里插入图片描述

3、事件的相关操作

事件:事件可以理解为用户在某一时刻做的某种操作,比如鼠标点击按钮,按下或弹起。

代码:(本代码实现监测用户输入的内容,传入到文本框中)
1、窗口类:

package day05;

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

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/*
 * 组件和事件
 */
public class MyFrame2 extends JFrame{
	//将控件放到类中
	JLabel label=new JLabel("用户名");
	JTextField text=new JTextField(16);
	JButton btn=new JButton("登录");
	JTextArea area=new JTextArea();
	//创建对象时执行构造函数,初始化数据
	public MyFrame2() {
		//创建面板
		JPanel panel=new JPanel();
		//设置文本域的宽高
		area.setPreferredSize(new Dimension(200,200));
		area.setText("数据显示区域");
		//向面板添加组件
		panel.add(label);
		panel.add(text);
		panel.add(btn);
		panel.add(area);
		//给按钮添加事件
		/*
		 * 事件是什么?
		 * 事件可以理解为用户在某一时刻做的某种操作
		 * 比如:鼠标点击按钮,按下,弹起
		 * 
		 */
		MyActionListener myListener=new MyActionListener();
		btn.addActionListener(myListener);
		this.add(panel);

	}

	private class MyActionListener implements ActionListener {
		
		@Override
		//点击按钮之后要处理的业务,就写在这个方法中
		//这个方法由系统来调
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			//获取文本输入信息
			String str=text.getText();
			String str1=area.getText();
			//str1="";//清空
			area.setText("");
			area.setText(str);
		}

	}
}

2、测试类:

package day05;

import javax.swing.JFrame;

public class Test02 {
	public static void main(String[] args) {
		//创建窗口
		MyFrame2 mf=new MyFrame2();
		//给窗口设置标题
		mf.setTitle("测试");
		mf.setSize(400, 300);
		mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		mf.setVisible(true);
		
	}
}

测试:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

总结:老师有说这种技术目前已不常用,但当前作为初学者,还是要把基础夯实一点的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值