第十八章:Swing自述

news2024/9/29 17:39:23

18.1 Swing概述

18.2:Swing常用窗体

18.2.1:JFrame窗体

package eightth;

import java.awt.*; //导入AWT包
import javax.swing.*; //导入Swing包

public class JFreamTest {
	public static void main(String args[]) { // 主方法
		JFrame jf = new JFrame();// 创建窗体对象
		jf.setTitle("创建一个JFrame窗体");// 设置窗体标题
		Container container = jf.getContentPane(); // 获取主容器
		JLabel jl = new JLabel("这是一个JFrame窗体");// 一个文本标签
		jl.setHorizontalAlignment(SwingConstants.CENTER); // 使标签上的文字居中
		container.add(jl); // 将标签添加到主容器中
		jf.setSize(300, 150); // 设置窗体宽高
		jf.setLocation(320, 240);// 设置窗体在屏幕中出现的位置
		jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 关闭窗体则停止程序
		jf.setVisible(true); // 让窗体展示出来
	}
}
//例题18.1

18.2.2:JDialog对话框

package eightth;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class MyJDialog extends JDialog { // 自定义对话框类,继承JDialog
	public MyJDialog(MyFrame frame) {
		// 调用父类构造方法,第一个参数是父窗体,第二个参数是窗体标题,第三个参数表示阻塞父窗体
		super(frame, "第一个JDialog窗体", true);
		Container container = getContentPane(); // 获取主容器
		container.add(new JLabel("这是一个对话框")); // 在容器中添加标签
		setBounds(120, 120, 100, 100); // 设置对话框窗体在桌面显示的坐标和大小
	}
}

public class MyFrame extends JFrame { // 自定义窗体类,继承JFrame
	public MyFrame() {// 窗体的构造方法
		Container container = getContentPane(); // 获得窗体主容器
		container.setLayout(null); // 容器使用绝对布局
		JButton bl = new JButton("弹出对话框"); // 创建一个按钮
		bl.setBounds(10, 10, 100, 21); // 定义按钮在容器中的坐标和大小
		bl.addActionListener(new ActionListener() { // 为按钮添加点击事件
			public void actionPerformed(ActionEvent e) {// 点击事件触发的方法
				MyJDialog dialog = new MyJDialog(MyFrame.this); // 创建MyJDialo对话框
				dialog.setVisible(true); // 使对话框可见
			}
		});
		container.add(bl); // 将按钮添加到容器中
		setSize(200, 200); // 窗体的宽高
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 关闭窗体则停止程序
		setVisible(true); // 使窗体可见
	}

	public static void main(String args[]) {
		new MyFrame();
	}
}
//例题18.2

18.2.3:JOptionPane小型对话框

1.通知框

package eightth;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JOptionPane;

public class Demo {
	public static void main(String[] args) {
		Object o[] = {new JButton("是的"), new JButton("再想想")};   // 按钮对象的Object数组
		Icon icon = new ImageIcon("src/注意.png");                      // 获取图标对象
		JOptionPane.showOptionDialog(null, "你做好准备了吗?", "注意了!",
		JOptionPane.DEFAULT_OPTION, JOptionPane.DEFAULT_OPTION, icon, o, null);

	}
}
//例题18.3

 2.确认框

package eightth;
import javax.swing.JOptionPane;
public class Demo4 {
	public static void main(String[] args) {
		int answer = JOptionPane.showConfirmDialog(null,
				"确定离开吗?",
				"标题",
				JOptionPane.YES_NO_OPTION);
	}
}

//例题18.4
package eightth;
import javax.swing.JOptionPane;
public class Demo4 {
	public static void main(String[] args) {
		int answer = JOptionPane.showConfirmDialog(null,
				"确定离开吗?",
				"标题",
				JOptionPane.YES_NO_CANCEL_OPTION);
	}
}

//例题18.4

 

 

3.输入框

package eightth;


import javax.swing.JOptionPane;

public class Demo5 {
	public static void main(String[] args) {
		String name = JOptionPane.showInputDialog(null, "请输入您的姓名");
	}
}
//例题18.5

4.通知框

package eightth;


import javax.swing.JOptionPane;

public class Demo6 {
	public static void main(String[] args) {
		JOptionPane.showMessageDialog(null, 
				"您与服务器断开了连接", 
				"发生错误", 
				JOptionPane.ERROR_MESSAGE);
	}
}
//例题18.6

18.3:常用布局管理器 

18.3.1:null绝对布局

18.3.2:BorderLayout边界布局管理器

package eightth;

import java.awt.*;
import javax.swing.*;
public class AbsolutePosition extends JFrame {
    public AbsolutePosition() {
        setTitle("本窗体使用绝对布局");               // 窗体标题
        setLayout(null);                              // 使用null布局
        setBounds(0, 0, 300, 150);                  // 设置窗体的坐标与宽高
        Container c = getContentPane();            // 获取主容器
        JButton b1 = new JButton("按钮1");          // 创建按钮
        JButton b2 = new JButton("按钮2"); 
        b1.setBounds(10, 30, 80, 30);               // 设置按钮的位置与大小
        b2.setBounds(60, 70, 100, 20);
        c.add(b1); // 将按钮添加到容器中
        c.add(b2);
        setVisible(true);                               // 使窗体可见
      
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);   // 关闭窗体则停止程序
    }
    public static void main(String[] args) {
        new AbsolutePosition();
    }
}

//例题18.7

 

 

package eightth;
import java.awt.*;
import javax.swing.*;
public class FlowLayoutPosition extends JFrame {
    public FlowLayoutPosition() {
        setTitle("本窗体使用流布局管理器");       // 设置窗体标题
        Container c = getContentPane();
        // 窗体使用流布局,组件右对齐,组件之间的水平间隔为10像素,垂直间隔10像素
        setLayout(new FlowLayout(FlowLayout.RIGHT, 10, 10));
        for (int i = 0; i < 10; i++) {        // 在容器中循环添加10个按钮
            c.add(new JButton("button" + i));
        }
        setSize(300, 200);                    // 设置窗体大小
       
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); // 关闭窗体则停止程序
        setVisible(true);                    // 设置窗体可见
    }
    public static void main(String[] args) {
        new FlowLayoutPosition();
    }
}


//例题18.8

 

package eightth;

import java.awt.*;
import javax.swing.*;

public class BorderLayoutPosition extends JFrame {
	public BorderLayoutPosition() {
		setTitle("这个窗体使用边界布局管理器");
		Container c = getContentPane(); // 获取主容器
		setLayout(new BorderLayout()); // 容器使用边界布局
		JButton centerBtn = new JButton("中");
		JButton northBtn = new JButton("北");
		JButton southBtn = new JButton("南");
		JButton westBtn = new JButton("西");
		JButton eastBtn = new JButton("东");
		c.add(centerBtn, BorderLayout.CENTER); // 中部添加按钮
		c.add(northBtn, BorderLayout.NORTH); // 北部添加按钮
		c.add(southBtn, BorderLayout.SOUTH); // 南部添加按钮
		c.add(westBtn, BorderLayout.WEST); // 西部添加按钮
		c.add(eastBtn, BorderLayout.EAST); // 东部添加按钮
		setSize(350, 200); // 设置窗体大小
		setVisible(true); // 设置窗体可见
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); // 关闭窗体则停止程序
	}

	public static void main(String[] args) {
		new BorderLayoutPosition();
	}
}
//18.9

18.3.4:GridLayout网格布局管理器

package eightth;
import java.awt.*;
import javax.swing.*;
public class GridLayoutPosition extends JFrame {
    public GridLayoutPosition() {
        Container c = getContentPane();
    	   // 设置容器使用网格布局管理器,设置7行3列的网格。组件间水平间距为5像素,垂直间距为5像素
        setLayout(new GridLayout(7, 3, 5, 5));
        for (int i = 0; i < 20; i++) {
            c.add(new JButton("button" + i));   // 循环添加按钮
        }
        setSize(300, 300);
        setTitle("这是一个使用网格布局管理器的窗体");
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new GridLayoutPosition();
    }
}

//例题18.10

 

18.4:常用面板

18.4.1:JPanel面板

package eightth;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;

public class JPanelTest extends JFrame {
	public JPanelTest() {
		Container c = getContentPane();
		// 将整个容器设置为2行2列的网格布局,组件水平间隔10像素,垂直间隔10像素
		c.setLayout(new GridLayout(2, 2, 10, 10));
		// 初始化一个面板,此面板使用1行4列的网格布局,组件水平间隔10像素,垂直间隔10像素
		JPanel p1 = new JPanel(new GridLayout(1, 4, 10, 10));
		// 初始化一个面板,此面板使用边界布局
		JPanel p2 = new JPanel(new BorderLayout());
		// 初始化一个面板,此面板使用1行2列的网格布局,组件水平间隔10像素,垂直间隔10像素
		JPanel p3 = new JPanel(new GridLayout(1, 2, 10, 10));
		// 初始化一个面板,此面板使用2行1列的网格布局,组件水平间隔10像素,垂直间隔10像素
		JPanel p4 = new JPanel(new GridLayout(2, 1, 10, 10));
		// 给每个面板都添加边框和标题,使用BorderFactory工厂类生成带标题的边框对象
		p1.setBorder(BorderFactory.createTitledBorder("面板1"));
		p2.setBorder(BorderFactory.createTitledBorder("面板2"));
		p3.setBorder(BorderFactory.createTitledBorder("面板3"));
		p4.setBorder(BorderFactory.createTitledBorder("面板4"));
		// 在面板1中添加按钮
		p1.add(new JButton("b1"));
		p1.add(new JButton("b1"));
		p1.add(new JButton("b1"));
		p1.add(new JButton("b1"));
		// 向面板2中添加按钮
		p2.add(new JButton("b2"), BorderLayout.WEST);
		p2.add(new JButton("b2"), BorderLayout.EAST);
		p2.add(new JButton("b2"), BorderLayout.NORTH);
		p2.add(new JButton("b2"), BorderLayout.SOUTH);
		p2.add(new JButton("b2"), BorderLayout.CENTER);
		// 向面板3中添加按钮
		p3.add(new JButton("b3"));
		p3.add(new JButton("b3"));
		// 向面板4中添加按钮
		p4.add(new JButton("b4"));
		p4.add(new JButton("b4"));
		// 向容器中添加面板
		c.add(p1);
		c.add(p2);
		c.add(p3);
		c.add(p4);
		setTitle("在这个窗体中使用了面板");
		setSize(500, 300);// 窗体宽高
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); // 关闭动作
	}

	public static void main(String[] args) {
		JPanelTest test = new JPanelTest();
		test.setVisible(true);
	}
}
//例题18.11

 18.4.2:JScrollPane

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1181271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

问题 N: A strange lift(BFS)

代码如下&#xff1a; #include<queue> #include<iostream> using namespace std; int main() {int num1;while (scanf("%d", &num) && num){queue<int> disp;int fir 0, end 0;int arr[209] { 0 };int visit[209] { 0 };int fl…

k8s configMap挂载(项目配置文件放到configMap中,不同环境不同配置)

背景说明 项目对接配置文件加密&#xff0c;比如数据库密码、redis密码等。但是密文只能放到指定的配置文件中(important.properties)&#xff0c;该配置文件又不能接收环境变量&#xff0c;所以就很难区分不同环境的不同配置&#xff08;不同环境的数据库密码、redis密码一般…

世微 DC-DC降压恒注驱动芯片 LED汽车大灯 过EMC认证 AP2400

产品特点 宽输入电压范围&#xff1a;5V&#xff5e;100V 可设定电流范围&#xff1a;10mA&#xff5e;6000mA 固定工作频率&#xff1a;150KHZ 内置抖频电路&#xff0c;降低对其他设备的 EMI 干扰 平均电流模式采样&#xff0c;恒流精度更高 0-100%占空比控制&#…

【C++】多态 ⑬ ( 多继承中应用 “ 抽象类 “ | 接口和抽象类 | C++ 语言中接口实现 | 只定义 纯虚函数 的 抽象类作接口 | )

文章目录 一、多继承中应用 " 抽象类 "1、接口和抽象类2、编程语言对接口和多继承的支持3、C 语言中接口实现 二、代码示例 - 多继承中应用 " 抽象类 " 一、多继承中应用 " 抽象类 " 1、接口和抽象类 接口 Interface 和 抽象类 AbstractClass 都…

计算器中处于不同进制时

计算器中处于不同进制时 p10x20, p00x31它俩的位置关系如下,求p1p0的值 计算器软件中, 当光标在不同的进制时,选择左移或右移,得到的结果是不一样的 因为当你处于不同的进制时&#xff0c;你移动的数字 对应的进制数就是你目前所处的进制。 就是说你在计算器中算&#xff0c;…

人大女王大学金融硕士项目:培养引领金融行业未来的的新力量

在全球化的今天&#xff0c;金融行业的发展日新月异&#xff0c;对于专业人才的需求也日益增长。在这个背景下&#xff0c;人大女王大学金融硕士项目应运而生&#xff0c;旨在培养具有全球视野、创新思维和实践能力的金融精英&#xff0c;为金融行业的未来发展注入新的活力。 …

想要搭建网站帮助中心,看这一篇指南就对了!

在现今互联网时代&#xff0c;除了让用户了解产品的功能和一些操作&#xff0c;很多企业都需要在网上进行信息的发布和产品销售等业务活动。而这就需要一个帮助中心&#xff0c;在用户遇到问题或者需要了解更多信息的时候&#xff0c;能够快速地解答他们的疑惑和提供响应的帮助…

安防监控系统EasyCVR平台设备通道绑定AI算法的功能设计与开发实现

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台可拓展性强、…

这些面试必备的IC项目资源,你收藏了吗?(可领取)

众所周知&#xff0c;IC行业的技术和经验是敲门砖&#xff0c;也是试金石。其中&#xff0c;IC实战项目就是关键一环。 如果你是出于个人自我学习的需要。 学习完理论基础知识还有很多地方都是一知半解的&#xff0c;接受了大量的信息输入&#xff0c;一定要有输出。所以个人…

soildwork2022怎么样添加螺纹孔?

1.退出草图模式&#xff0c;点击需要添加螺纹孔的物体面&#xff0c;选中“特征”中的“异形孔向导” 2.选中“孔类型”为“直螺纹孔”&#xff0c;“标准”&#xff0c;“类型”&#xff0c;“孔规格”终止条件等。 3.设置完之后选择“位置” 4.鼠标左键在物体面上点一下&…

谭巍主任科普:单纯HPV感染,无宫颈病变,在该时间段可自行清除

在医学上&#xff0c;HPV病毒是人类乳头瘤病毒的缩写&#xff0c;它有100多个亚型&#xff0c;分为高危型和低危型。HPV病毒感染是宫颈癌、肛门癌、外阴癌、喉癌、食道癌和肺癌等多种癌症的主要诱因。而劲松HPV防治诊疗中心主任谭巍则指出其中高危型HPV病毒持续感染是宫颈癌的主…

Kepp-alive的实际运用场景(1)

kepp-alive简单介绍&#xff1a;将组件缓存&#xff0c;不更新数据&#xff0c;被kepp-alive包裹的路由的组件的钩子函数不会生效。 运用场景&#xff1a; 假设我们有这样的一个功能需要实现&#xff0c;我们从主页进入到订单列表页&#xff0c;在从订单列表页进入到订单详情页…

在接口测试中怎么处理开发是否提供接口文档的总结

最近做了好几个项目的接口自动化&#xff0c;接口测试很重要的参考依据就是接口文档&#xff0c;在自动化实施过程中碰到的接口文档也是千差万别&#xff0c;有的项目没有接口文档&#xff0c;有的项目有接口文档&#xff0c;有接口文档的项目&#xff0c;有的很完善&#xff0…

分布式任务调度(03)--中心化设计

把调度和任务执行&#xff0c;隔离成两个部分&#xff1a; 调度中心 只需要负责任务调度属性&#xff0c;触发调度命令 执行器 执行器接收调度命令&#xff0c;去执行具体的业务逻辑 两者都可以进行横向扩容。 1 MQ 调度中心依赖Quartz集群模式&#xff0c;当任务调度时&am…

一文搞懂图像RGB和YUV编码及相互转换

一文搞懂图像RGB和YUV编码及相互转换 硬件花园 • 来源:硬件花园 • 作者:硬件花园 • 2023-05-17 08:37 • 3987次阅读 1 色彩空间和色彩模型 色彩是人眼对于不同频率的光线的不同感受。色彩既是客观存在的,但又是主观感知的,所以不同人对色彩的感知会存在差异。为了规范…

[论文阅读]PV-RCNN++

PV-RCNN PV-RCNN: Point-Voxel Feature Set Abstraction With Local Vector Representation for 3D Object Detection 论文网址&#xff1a;PV-RCNN 论文代码&#xff1a;PV-RCNN 简读论文 这篇论文提出了两个用于3D物体检测的新框架PV-RCNN和PV-RCNN,主要的贡献如下: 提出P…

有电闭锁继电器 YDB-100 100V 辅助电源DC110V JOSEF约瑟 板后安装

YDB-100有电闭锁继电器 1 应用 本继电器用于发电厂和变电站内&#xff0c;用作高压母线合接地刀闸的闭锁元件&#xff0c;以防止高压母线带电时合接地刀闸。 2 主要性能 2 1采用进口集成电路和元器件构成。具有原理先进、性能稳定、可靠性高、动作值精度高、离散值小、整定范围…

ideal一键部署SpringBoot项目jar包到服务器

一 简介 我们在开发环境部署项目一般通过ideal将项目打包成jar包&#xff0c;然后连接linux服务器&#xff0c;将jar手动上传到服务中&#xff0c;重启服务。 概括的说流程是这样的: 本地打包->上传到服务器->kill掉以前的服务->重新启动jar包服务 每次总是循环这一…

暴力枚举

文章目录 循环枚举统计方形加强版烤鸡三连击升级版 子集枚举选数组合的输出 排列枚举三连击升级版全排列问题火星人 [NOIP2004 普及组] 火星人题目描述输入格式输出格式样例 #1样例输入 #1 循环枚举 统计方形加强版 题目背景 1997年普及组第一题 题目描述 有一个 n m n …

Kubernetes 准入控制

Author&#xff1a;rab 目录 前言一、限制范围二、配置案例2.1 名称空间 CPU 与内存约束2.1.1 CPU 约束2.1.2 内存约束2.1.3 默认 CPU 申请约束2.1.4 默认内存申请约束 2.2 名称空间总容量限额约束 总结 前言 LimitRange 是限制命名空间内可为每个适用的对象类别 &#xff08;…