java day9

news2025/7/5 16:40:07

第九章 使用swing

  • 9.1 创建应用程序
    • 9.1.1 创建页面
    • 9.1.2 开发框架
    • 9.1.3 创建组件&& 9.1.4 将组件加入到容器中
  • 9.2 使用组件
    • 9.2.1 图标
    • 9.2.2 标签
    • 9.2.3 文本框
    • 9.2.4 文本区域
    • 9.2.5 可滚动窗格
    • 9.2.6 复选框和单选按钮
    • 9.2.7 组合框
    • 9.2.8 列表

9.1 创建应用程序

import javax.swing.*;

使用Swing组件时,实际操纵的是该组件类的对象。您通过调用构造函数来创建组件,然后调用相应的方法来正确的设置组件。所有的Swing组件都是抽象类JComponent的子类。

组件必须添加到容器(container)中后,才能显示在用户界面上。容器是可以放置其他组件的组件

9.1.1 创建页面

在很多项目中,主界面对象都是框架(JFrame类)。框架是用户在计算机上启动应用程序时显示的窗口,无论该程序是使用哪种语言编写的。

public class FeedReader extends JFrame{
	// body of class
}

将界面声明为JFrame的子类,这个类的构造函数需要完成下列几项工作:

  • 调用超类的构造函数,给框架指定标题以及完成其他设置
  • 设置框架的大小,指定宽高或让swing选择大小
  • 决定用户关闭窗口时怎么办
  • 显示框架
setTitle(String)
// 设置标题

setSize(int,int)
// 设置宽和高

pack()
// 根据框架包含的组件大小相应的调整框架大小

show()
setVisible(boolean)
// 使框架可见

setBounds(int,int,int,int)
// 指定框架位置,前两个参数是框架左上角的(x,y)坐标,后两个是框架
// 的宽度和高度

setDefaultCloseOperator()
- EXIT_ON_CLOSE  // 框架关闭时退出程序
- DISPOSE_ON_CLOSE 
// 框架关闭时释放java虚拟机(JVM)内存中的框架对象,并继续运行应用程序。
- DO_NOTHING_ON_CLOSE // 让框架打开并继续运行程序
- HIDE_ON_CLOSE // 关闭框架并继续运行程序

前面说过,使用java编程时可定制用户界面的整体外观。Swing的这方面由javax.swing包中的UIManager类管理。要设置外观,可调用类方法setLookAndFeel(String),并将外观类的名称作为参数。下面的代码演示了如何将外观指定为Nimbus:

UIManeger.setLookAndFeel(
	"com.sum.java.swing.plaf.nimbus.NimbusLookAndFeel"
	);

应将上述方法调用放在try-catch块内,因为它可能引发5种不同的异常。在不支持Nimbus的环境中,可捕获Exception异常并忽略它,这样将使用默认外观。

9.1.2 开发框架

import javax.swing.*;

public class SimpleFrame extends JFrame {
    public SimpleFrame() {
        super("Frame Title");
        setSize(300, 100);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLookAndFeel();
        setVisible(true);
    }

    private static void setLookAndFeel() {
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (Exception exc) {
            // ignore error
        }
    }

    public static void main(String[] args) {
        setLookAndFeel();
        SimpleFrame sf = new SimpleFrame();
    }
}

在这里插入图片描述

9.1.3 创建组件&& 9.1.4 将组件加入到容器中

JButton play =new JButton("play"); //创建名为play的按钮
JPanel panel = new JPanel(); // 创建容器
panel.add(quit); // 将按钮添加到容器中

9.2 使用组件

setEnable(boolean)
// 决定组件是否被启用

isEnabled()
// 返回布尔值,检查组件是否被启用

setVisible(boolean)
// 是否显示组件

getSize()
// 返回一个Dimension对象,该对象的实例变量height和width描述组件的大小

9.2.1 图标

Swing支持在按钮和其他提供标签的组件上使用对象ImageIcon。要创建ImageIcon对象,可调用其构造函数,并将图形文件名作为参数传递给它。

ImageIcon subscribe = new ImageIcon("subscribe.gif");

在这里插入图片描述

9.2.2 标签

标签是一个包含说明性文本、图标或两者都有的用户组件

JLabel label=new JLabel("URL: ",SwingConstants.CENTER);
// SwingConstants接口有三个静态类变量用于指定对齐方式
- LEFT
- CENTER
- RIGHT

setText(String)
// 设置标签文本

setIcon(Icon)
// 设置标签图标

getText()getIcon()
// 获取文本和图标

9.2.3 文本框

文本框是界面上的一篇区域,用户可以通过键盘输入、修改其中的内容

JTextField rssUrl = new JTextField(60);
JTextField rssUrl2 = new JTextField("Enter feed URL here",60);

setEditable(boolean)
// 指定文本组件可编辑或不可编辑

isEditable()
// 返回相应boolean值

setText(string)
// 将文本修改为指定的字符串

getText()
// 将当前文本作为字符串返回

getSelectedText()
// 返回被选中的文本

密码框(password field)也是一个文本框,它将用户输入的字符隐藏起来。密码框通常由类JPasswordField表示,这是JTextField的一个子类。

JPasswordField codePhrase = new JPasswordField(20);
codePhrase.setEchoChar("#");

9.2.4 文本区域

文本区域(text area)是能够处理多行输入的可编辑文本框,由类JTextArea实现。

JTextArea(int,int)
JTextArea(String,int,int)
// 行数和列数为指定值,且包含指定文本的文本区域

getText()
getSelectedText()
setText(String)

append(String)
// 将指定的文本加入到当前文本的末尾

insert(String,int)
// 将指定的文本插入到指定的位置

setLineWrap(boolean)
// 指定文本在达到组件边界时是否自动换行

setWrapStyleWord(boolean)
// 指定如何换行:是将当前单词(参数为true时)还是将当前字符(参数为false时)
// 换到下一行

9.2.5 可滚动窗格

Swing来通过一种新的容器JScrollPane来支持滚动条,它可以用来放置任何可滚动的组件。

JScrollPane(component) 
// 包含指定组件的可滚动窗格
JScrollPane(component,int,int)
// 包含指定的组件,并带垂直滚动条和水平滚动条的可滚动窗格

9.2.6 复选框和单选按钮

复选框(JCheckBox类)是带标签或不带标签的框,选中时框中有一个复选标记,否则为空。单选按钮(JRadioButton)是一个圆圈,选中时有一个圆点,否则为空。

JCheckBox和JRadioButton类从其超类JToggleButton中继承一些很有用的方法

  • setSelected(boolean):如果参数为true则选中组件,否则不选中
  • isSelected():返回一个布尔值,指出组件是否被选中

要将多个单选按钮组织成一组,只允许每次选中其中一个,可以创建一个ButtonGroup对象

ButtonGroup choice = new ButtonGroup();

对象ButtonGroup跟踪所有单选按钮,可以调用方法add(Component)将指定的组件加入到组中

9.2.7 组合框

Swing类JComboBox可用于创建组合框:提供一个下拉式菜单,用户可以从中选择一项。当组合框未被使用时,菜单被隐藏,这样它在GUI中占用的空间更小。

String[] formats = {"Atom","RSS 0.92","RSS 1.0","RSS 2.0"};
JComboBox formatBox = new JComboBox(formats);

常用方法:

getItemAt(int)
// 返回位于整数参数指定的索引位置的选项文本
getItemCount()
// 返回列表中的选项数目
getSelectedIndex()
// 返回当前选项的索引
getSelectedItem()
// 返回当前选项的文本
setSelectedIndex(int)
// 选定索引指定的选项
setSelectedIndex(Object)
// 选中指定的对象

在这里插入图片描述

9.2.8 列表

列表是用类List表示的,它让用户能够从中选择一个或多个值

JList()
// 创建一个列表

setListData()
// 接受数组或矢量填充空列表

setVisibleRowCount(int)
// 并将要显示的项数作为参数

getSelectedValuesList(int)
// 返回对象列表,其中包含列表中所有被选中的项,可转换为ArrayList

String[] formats = {"Atom","RSS 0.92","RSS 1.0","RSS 2.0"};
JComboBox formatBox = new JComboBox(formats);

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

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

相关文章

FPGA基于SFP光口实现10G万兆网UDP通信 10G Ethernet Subsystem替代网络PHY芯片 提供工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、详细设计方案4、vivado工程详解5、上板调试验证并演示6、福利:工程代码的获取 1、前言 目前网上的fpga实现udp基本生态如下: 1:verilog编写的udp收发器,但不带ping功能,这样的代…

The GNU nano text editor (文本编辑器)

The GNU nano text editor (文本编辑器) https://www.nano-editor.org/ GNU nano is a small and friendly text editor. 1 GNU nano The GNU nano text editor https://www.nano-editor.org/dist/latest/nano.html Source Code https://git.savannah.gnu.org/cgit/nano.gi…

EIGRP 配置,详解拓扑表,路由汇聚

1.3 EIGRP 拓扑,路由以及汇聚 1.3.1 实验目的 通过对 EIGRP 拓扑,路由以及汇聚相关实验的练习,掌握 EIGRP 建立拓扑信息的方式, 度量计算方法,如何调整度量,非等价负载均衡,以及 EIGRP 末节路…

anaconda ( jupyter notebook ) 安装 Cartopy库

文章目录 一、Cartopy库是什么?二、一步到位安装(装不上的话用下面那个方法虚拟环境安装)三、如何在anaconda ( jupyter notebook ) 虚拟环境安装 Cartopy库? 一、Cartopy库是什么? Cartopy 是一个开源免费的第三方 P…

mac压缩文件多了__MACOSX目录问题

文章目录 背景原因解决方案:更换压缩方式分析问题拓展(.DS_Store) 背景 项目中有一个场景,需要把目录压缩为app离线包的zip 但是压缩之后一致打不开,别人上传的zip是好的 原因 如图,我上传的在安卓设备…

D.8零样本文本分类应用:基于UTC的医疗意图分类,打通数据标注-模型训练-模型调优-预测部署全流程。

NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等 专栏详细介绍:NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型…

如何制作 ChatGPT 清晰有效咒语与Chat GPT高效交流——基础篇 第二课

在上一篇文章中,我们已经了解了 ChatGPT 的特性、应用范围以及逆天之处。然而,要想获得 ChatGPT 的逆天能力,最关键的一点就是必须掌握准确的“咒语”,即让其能够准确地理解我们所说的话,以及我们想要的东西。本篇文章…

一条记录的多幅面孔-事务的隔离级别与 MVCC

一、事务隔离级别 引出:**事务的隔离性要求,**理论上在某个事务对某个数据进行访问时,其他事务应该进行排队,当该事务提交之后,其他事务才可以继续访问这个数据。我们既想保持事务的 隔离性 ,又想让服务器…

CCED,落下帷幕,国产新型编辑技术的锋芒,终于露出来了

大家还记得在DOS时代,你们常用的办公软件有哪些吗? 想必一定少不了朱崇君的CCED和求伯君的WPS吧,前者是字表处理,后者是文字处理。在DOS时代,这两个软件用起来真的是得心应手啊。 而这个时代,也成为了CCE…

jupyter中的魔法函数

在jupyter中,使用魔法函数可以简单的实现一些单纯python要很麻烦才能实现的功能。 1. % 行魔法函数,只对本行代码生效。 2. %% Cell魔法函数,在整个Cell中生效,必须放于Cell首行。 3. %lsmagic: 列出所有的魔法函数 4…

Android Gradle —— flavorDimensions 与 productFlavors

参考: Android Gradle(3)— FlavorDimensions_积跬步_图腾的博客-CSDN博客 flavorDimensions和productFlavors——安卓gradle_猛猛的小盆友的博客-CSDN博客 多维度打包的介绍 flavorDimensions 从单词字面理解知道是 “风味维度”&#xf…

jsp小练习01--jdbc小练习01

目录 jsp小练习01 jdbc小练习01 设计数据库 以下是一个基本的登录页面(login.jsp): 以下是checklogin.jsp页面的示例代码: 以下是main.jsp页面的示例代码: 以下是add.jsp页面的示例代码: 以下是doa…

【2023 · CANN训练营第一季】昇腾AI入门课(Pytorch)——第三章 AI应用开发

第1节 课程概述 第1单元 本课程是否适合您 1.没有深度学习的背景 边学习边补充基础 2.少量深度学习背景,但并不了解华为昇腾 对于昇腾的学习是贯穿全程的 3.听说过或接触过华为昇腾,但不知道如何基于昇腾使能AI应用。 保持学习,按时交作业…

Letcode 两数之和

1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以…

Wi-Fi 6(802.11ax)解析12:下行OFDMA接入机制(DL-OFDMA)

序言 在介绍完802.11ax的信道接入以及其触发帧机制后,本文着重介绍下行OFDMA的接入机制(即DL-OFDMA) 下行OFDMA接入机制(DL-OFDMA) OFDMA是一种多用户通信机制,其只适用于802.11ax AP和802.11ax用户之间…

ChatGPT 学习 ES lucene 底层写入原理,源码

一直有个疑问“学习最新版lucene 数据写入相关的源码,应该看哪些源码,以什么顺序看(先看什么,后看什么)?” 对于Lucene的数据写入过程,可以分为以下几个阶段 在学习Lucene的数据写入相关的源码…

FTP服务

一、FTP的简介 FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的…

C++笔记——第十四篇 哈希

目录 一、unordered系列关联式容器 1.1 unordered_map 1.1.1 unordered_map的文档介绍 1.1.2 unordered_map的接口说明 二、 底层结构 2.1 哈希概念 2.2 哈希冲突 2.3 哈希函数 2.4 哈希冲突解决 2.4.1 闭散列 1. 线性探测 2. 二次探测 2.4.2 开散列 三、 哈希的应用 …

200万奖金广聚天下算法英雄,第二届广州·琶洲算法大赛要来了!

随着深度学习不断驱动技术创新,人工智能加速与实体经济深度融合发展。作为中国首个自主研发、开源开放的产业级深度学习平台,飞桨与百度自研的产业级知识增强文心大模型,共同构筑了产业智能化基座,并联合产学研用各方生态力量&…

学习风`宇博客用户权限菜单模块

文章目录 用户-角色-菜单-资源 各表关系图菜单 和 路由菜单表及分析分析 /api/admin/user/menus接口MenuServiceImpl#listUserMenus接口返回示例及分析 前端代码分析menu.jsSideBar.vue 接口权限控制资源表 及 分析分析 WebSecurityConfig权限控制整体流程先说登录UserDetailsS…