跟着明日科技学Swing

跟着明日科技学Swing

在这里插入图片描述

窗体JFrame

在这里插入图片描述

import java.awt.Color;
import java.awt.Container;

import javax.swing.*;

public class Demo_Swing extends JFrame {// 一般让此类也成为窗体
	public Demo_Swing() {// 构造方法
		setTitle("窗体标题");// 设置窗体标题
		// JFrame f = new JFrame("窗体标题");//创建窗体对象
		setVisible(true);// 设置窗体可见

		/*
		 * 窗体关闭规则:
		 *  EXIT_ON_CLOSE:隐藏窗体,并停止程序
		 *  DO_NOTHING_ON_CLOSE:无任何操作
		 * HIDE_ON_CLOSE:隐藏窗体但不停止程序
		 *  DISPOSE_ON_CLOSE:释放窗体资源
		 */

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// f.setSize(300, 200);//设置窗体的大小 像素是像素
		// f.setLocation(200,200);//设置坐标 像素是像素
		setBounds(200, 200, 300, 200);// 设置窗体坐标和大小 像素是像素

		Container c = getContentPane();// 获取窗体容器
		c.setBackground(Color.WHITE);// 设置背景颜色

		JLabel l = new JLabel("俺是窗体QAQ");
		c.add(l);// 添加组件
		// c.remove(l);//删除组件
		c.validate();// 验证容器中的组件 相当于刷新操作
		// f.setContentPane(c);//重新载入容器

		setResizable(true);// false禁用窗体拖拽改变大小
		System.out.println("x=" + getX());// 获取横坐标
		System.out.println("x=" + getY());// 获取纵坐标
	}

	public static void main(String[] args) {
		new Demo_Swing();// 直接调用构造方法
	}
}

运行截图

在这里插入图片描述

对话框窗体JDialog

在这里插入图片描述

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Demo_JDialog extends JDialog {
	public Demo_JDialog(JFrame frame) {
		/*
		 * 第一个参数 父窗体
		 *  第二个参数 对话框标题
		 *   第三个参数 是否阻塞父窗体
		 */
		super(frame, "对话框标题", true);// 设置对话框是否覆盖窗体 (true 阻塞)

		Container c = getContentPane();// 获取窗体容器
		c.setBackground(Color.WHITE);// 设置背景颜色
		c.add(new JLabel("俺是对话框"));

		// setVisible(true);//设置窗体可见
		setBounds(100, 100, 200, 100);// 设置坐标和大小

	}

	public static void main(String[] args) {
		JFrame f = new JFrame("窗体标题");// 创建窗体对象
		f.setBounds(200, 200, 300, 200);// 设置窗体坐标和大小 像素是像素
		Container c = f.getContentPane();// 获取容器
		JButton btn = new JButton("你敢按一下试试");// 设置按钮
		c.setLayout(new FlowLayout());// 设置布局 流布局(按钮清晰可见)
		c.add(btn);// 将按钮装入容器
		f.setVisible(true);// 设置窗体可见
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置关闭

		btn.addActionListener(new ActionListener() {// 由按钮引出对话框
			public void actionPerformed(ActionEvent e) {

				Demo_JDialog d = new Demo_JDialog(f);
				d.setVisible(true);// 设置窗体可见

			}
		});// 添加动作监听

	}
}

运行截图

在这里插入图片描述

标签JLable

在这里插入图片描述

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;

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

public class Demo_JLabel extends JFrame {
	
	public Demo_JLabel() {
		setBounds(100, 100, 300, 200);// 设置坐标和大小
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置关闭规则
		Container c = getContentPane();// 获取容器
		setVisible(true);// 设置可见

		JLabel l = new JLabel("俺是标题");// 设置标题
		l.setText("假装没有更改标题");// 修改标签
		System.out.println("打印标题:" + l.getText());

		l.setFont(new Font("楷体", Font.BOLD, 15));// 设置字体
		l.setForeground(Color.GREEN);//设置字体颜色

		c.add(l);
	}

	public static void main(String[] args) {
		new Demo_JLabel();
	}

}

运行截图

在这里插入图片描述

图片的使用

在这里插入图片描述

import java.awt.Container;
import java.awt.Image;
import java.net.URL;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Demo_picture extends JFrame {
	public Demo_picture() {
		setTitle("皮卡丘");// 设置窗体标题
		setBounds(100, 100, 800, 500);// 设置坐标和大小
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置关闭规则
		Container c = getContentPane();// 获取容器

		JLabel l = new JLabel("站住!你是干啥滴!");// 使用标签展示图片
		// URL url=Demo_picture.getResource("");//获取文件UML路径
		// System.out.println(url);//输出路径
		Icon icon = new ImageIcon("C:\\Users\\联想\\Pictures\\Saved Pictures\\2edb00006cb08accfed0.png");// 文件路径
		l.setIcon(icon);// 添加图片
		
		//等比缩小
		int width = 200; //假设要缩小到500点像素
		int height = icon.getIconHeight()*width/icon.getIconWidth();//按比例,将高度缩减
		((ImageIcon) icon).setImage(((ImageIcon) icon).getImage().getScaledInstance(width, height,Image.SCALE_DEFAULT ));//设置图片大小
		
		l.setSize(20, 20);// 设置标签大小,并不能改变图片的大小
		c.add(l);

		setVisible(true);// 设置可见

	}

	private static URL getResource(String string) {
		// TODO 自动生成的方法存根
		return null;
	}

	public static void main(String[] args) {
		new Demo_picture();
	}
}

运行截图

在这里插入图片描述

绝对布局

在这里插入图片描述
在这里插入图片描述

流布局

在这里插入图片描述
在这里插入图片描述

边界布局

在这里插入图片描述
在这里插入图片描述

网格布局

在这里插入图片描述
在这里插入图片描述

布局代码

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;

import javax.swing.*;

public class Demo_layout extends JFrame {
	public Demo_layout() {
		setBounds(200, 200, 500, 300);// 设置窗体坐标和大小
		setVisible(true);// 设置窗体可见
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭方法

		Container c = getContentPane();// 设置容器

		
		// 绝对布局null
		// JButton b1=new JButton("这不是按钮1"),
		// b2=new JButton("这不是按钮2"),
		// b3=new JButton("这不是按钮3");//创建三个按钮
		// c.setLayout(null);//将容器布局设置为绝对布局
		// b1.setBounds(10,30,80,30);//设置按钮在容器中的坐标和大小
		// b2.setBounds(60,70,100,20);
		// b3.setBounds(100,90,80,30);
		// c.add(b1);
		// c.add(b2);
		// c.add(b3);//添加三个按钮

		// //流布局 FlowLayout 从左到右排列,默认居中对齐
		// //c.setLayout(new FlowLayout());
		// c.setLayout(new FlowLayout(FlowLayout.CENTER,20,20));//可添加具体要求
		// FlowLayout.CENTER 来设置布局 20,20 分别为水平间距和垂直间距
		// for(int i=0;i<12;i++)
		// {
		// c.add(new JButton("这不是按钮"+i));
		// }

		// 边界布局 BorderLayout 将窗体划分成五个区域 东南西北中
		// 添加组件时指定区域,否则默认中间区域 同一区域组件会相互覆盖
//		c.setLayout(new BorderLayout());// 设置为边界布局
//		JButton b1 = new JButton("中"),
//				b2 = new JButton("东"),
//				b3 = new JButton("南"),
//				b4 = new JButton("西"),
//				b5 = new JButton("北");
//		c.add(b1, BorderLayout.CENTER);// 中部添加按钮
//		c.add(b2, BorderLayout.EAST);// 东部
//		c.add(b3, BorderLayout.SOUTH);// 南部
//		c.add(b4, BorderLayout.WEST);// 西部
//		c.add(b5, BorderLayout.NORTH);// 北部
//		c.add(new JButton("无情被覆盖"),BorderLayout.CENTER);
//
		
		
		
		
//		//网格布局 改变窗体大小组件不会改变与流布局不同之处 会扩大行
//		c.setLayout(new GridLayout(7, 5,5,5));//设置网格布局7行5列,水平间距5,垂直间距5
//		for(int i=0;i<35;i++)
//		{
//			c.add(new JButton("俺不是按钮"+i));
//		}
//		
//		//********************************************************************		
//			//面板  只能在窗体中使用
//			//添加组件 设置布局 更改属性
//		c.setLayout(new GridLayout(2,2,10,10));
//		
//		JPanel p1=new JPanel();
//		p1.setLayout(new GridLayout(1,3,10,10));
//		
//		JPanel p2=new JPanel(new BorderLayout());
//		JPanel p3=new JPanel(new GridLayout(1,2,10,10));
//		JPanel p4=new JPanel(new GridLayout(2,1,10,10));
//		
//		/*
//		 * 添加边框
//		 */
//		p1.setBorder(BorderFactory.createTitledBorder("面板1"));//添加标题边框
//		p2.setBorder(BorderFactory.createTitledBorder("面板2"));//添加标题边框
//		p3.setBorder(BorderFactory.createTitledBorder("面板3"));//添加标题边框
//		p4.setBorder(BorderFactory.createTitledBorder("面板4"));//添加标题边框
//		//为面板一添加按钮
//		for(int i=0;i<4;i++)
//		{
//			p1.add(new JButton("俺不是按钮"+i));
//		}
//		//为面板二添加按钮
//		p2.add(new JButton("俺不是按钮1"), BorderLayout.CENTER);// 中部添加按钮
//		p2.add(new JButton("俺不是按钮2"), BorderLayout.EAST);// 东部
//		p2.add(new JButton("俺不是按钮3"), BorderLayout.SOUTH);// 南部
//		p2.add(new JButton("俺不是按钮4"), BorderLayout.WEST);// 西部
//		p2.add(new JButton("俺不是按钮5"), BorderLayout.NORTH);// 北部
//		//为面板三添加按钮
//		for(int i=0;i<3;i++)
//		{
//			p3.add(new JButton("俺不是按钮"+i));
//		}
//		//为面板四添加按钮
//		p4.setBackground(Color.BLACK);//添加颜色
//		for(int i=0;i<3;i++)
//		{
//			p4.add(new JButton("俺不是按钮"+i));
//		}
//		
//		c.add(p1);//分别添加至容器
//		c.add(p2);
//		c.add(p3);
//		c.add(p4);
//	//************************************************************************	
		
		
		//滚动面板 
		JTextArea area=new JTextArea();//文本域
		area.setFont(new Font("楷体", Font.BOLD, 15));//设置字体
		JScrollPane sp=new JScrollPane(area);//创建滚动面板,给文本文件添加滚动条
		
		c.add(sp);
		
		
	}
				
		
		
	public static void main(String[] args) {
		new Demo_layout();
	}
}

面板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

滚动面板

在这里插入图片描述

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JRootPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Demo_JTextArea extends JFrame {
	public Demo_JTextArea() {
		setTitle("文本域");
		setBounds(200, 200, 800, 500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);

		Container c = getContentPane();
		c.setLayout(new FlowLayout());// 流布局

		JLabel l = new JLabel("你想干啥!");// 使用标签
		c.add(l);

		
		// 文本域 JTextArea
		JTextArea area = new JTextArea();// 创建一个文本域
		area.setText("文本域");// 可直接添加
		area.setRows(12);// 设置行
		area.setColumns(50);// 设置列
		area.append("添加内容");// 添加文本内容
		area.insert("插入", 2);// 第二个字符后插入
		area.setFont(new Font("楷体", Font.BOLD, 20));// 设置字体
		JScrollPane js = new JScrollPane(area);// 设置成滚动面板
		c.add(js);
		// ****************************************************************

		// 动作事件监听 ActionListener
		JButton jb = new JButton("按钮");
		jb.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				area.setText("按钮被点击!");

			}
		});
		c.add(jb);

		// 文本条 JTextField
		JTextField jt = new JTextField(20);// 设置文本大小
		c.add(jt);
		// 动作的事件监听
		jt.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// 按回车键输出
				Object obj = e.getSource();
				JTextField jtTmp = (JTextField) obj;
				System.out.println(jtTmp.getText());

				l.setText("文本框中点击了回车");
			}
		});

		// 多选框 JCheckBox
		JCheckBox jc = new JCheckBox("多选框");
		c.add(jc);
		// 动作的事件监听
		jc.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				l.setText("多选框被点击");
			}
		});

		// 单选框 JRadioButton
		JRadioButton jr = new JRadioButton("单选框");
		c.add(jr);
		// 动作的事件监听
		jr.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				l.setText("单选框被点击");
			}
		});

		// 下拉框 JComboBox
		String str[] = { "银酱", "神乐", "新八" };
		JComboBox<String> jb1 = new JComboBox(str);
		c.add(jb1);
		// 动作的事件监听
		jb1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				l.setText("下拉框被点击");
			}
		});

		// 文本条 JTextField
		JTextField jt1 = new JTextField(20);// 设置文本大小
		JLabel l1 = new JLabel("未获得焦点1");// 使用标签
		c.add(l1);
		c.add(jt1);

		JTextField jt2 = new JTextField(20);// 设置文本大小
		JLabel l2 = new JLabel("未获得焦点2");// 使用标签
		c.add(l2);
		c.add(jt2);

		JTextField jt3 = new JTextField(20);// 设置文本大小
		JLabel l3 = new JLabel("未获得焦点3");// 使用标签
		c.add(l3);
		c.add(jt3);

		JTextField jt4 = new JTextField(20);// 设置文本大小
		JLabel l4 = new JLabel("未获得焦点4");// 使用标签
		c.add(l4);
		c.add(jt4);

		// 焦点监听器 FocusListener

		jt1.addFocusListener(new FocusListener() {
			public void focusLost(FocusEvent e) {// 失去焦点
				l1.setText("失去焦点");
				l1.setForeground(Color.red);
			}

			public void focusGained(FocusEvent e) {// 获得焦点
				l1.setText("获得焦点");
				l1.setForeground(Color.blue);
			}
		});

		// 焦点监听器 FocusListener

		jt2.addFocusListener(new FocusListener() {
			public void focusLost(FocusEvent e) {// 失去焦点
				l2.setText("失去焦点");
				l2.setForeground(Color.red);
			}

			public void focusGained(FocusEvent e) {// 获得焦点
				l2.setText("获得焦点");
				l2.setForeground(Color.blue);
			}
		});

		// 焦点监听器 FocusListener

		jt3.addFocusListener(new FocusListener() {
			public void focusLost(FocusEvent e) {// 失去焦点
				l3.setText("失去焦点");
				l3.setForeground(Color.red);
			}

			public void focusGained(FocusEvent e) {// 获得焦点
				l3.setText("获得焦点");
				l3.setForeground(Color.blue);
			}
		});

		// 焦点监听器 FocusListener

		jt4.addFocusListener(new FocusListener() {
			public void focusLost(FocusEvent e) {// 失去焦点
				l4.setText("失去焦点");
				l4.setForeground(Color.red);
			}

			public void focusGained(FocusEvent e) {// 获得焦点
				l4.setText("获得焦点");
				l4.setForeground(Color.blue);
			}
		});

		jt1.addFocusListener(new MyFocusListenter());// 使用自定义类实现
		jt2.addFocusListener(new MyFocusListenter());
		jt3.addFocusListener(new MyFocusListenter());
		jt4.addFocusListener(new MyFocusListenter());
		
		c.validate();
	}

	// 内部类
	// 自定义的焦点监听
	class MyFocusListenter implements FocusListener {
		public void focusGained(FocusEvent e) {
			JTextField tmp = (JTextField) e.getSource();// 获取触发事件的组件
			tmp.setBorder(BorderFactory.createLineBorder(Color.blue));// 获取焦点设置边框颜色

		}

		public void focusLost(FocusEvent e) {
			JTextField tmp = (JTextField) e.getSource();
			tmp.setBorder(BorderFactory.createLineBorder(Color.red));

		}

	}

	// 键盘监听KeyListener

	public static void main(String[] args) {
		new Demo_JTextArea();
	}
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值