JavaGUI之SWT框架【Button】

news2024/11/16 1:57:31

文章目录

  • 1. 按钮类型
    • 1.1 普通按钮
    • 1.2 单选按钮
    • 1.3 多选按钮
  • 2. 文字风格
  • 3. 按钮外观风格

录制的视频

按钮Button,SWT框架中常见的组件。针对Button的设置分为三个层面,分别是按钮类型按钮文字对齐风格按钮外观风格

1. 按钮类型

○ 普通按钮(SWT.PUSH)
○ 单选按钮(SWT.RADIO)
○ 多选按钮(SWT.CHECK)
○ 箭头按钮(SWT.ARROW)
○ 切换按钮(SWT.TOGGLE)

代码

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

/**
 * Button的style设置
 */
public class ButtonStyle {
    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display, SWT.SHELL_TRIM);
        // 设置新布局
        shell.setLayout(new FillLayout(SWT.VERTICAL));

        // 设置样式
        createButton(shell, SWT.PUSH, "SWT.PUSH");
        createButton(shell, SWT.RADIO, "SWT.RADIO");
        createButton(shell, SWT.CHECK, "SWT.CHECK");
        createButton(shell, SWT.ARROW, "SWT.ARROW");
        createButton(shell, SWT.TOGGLE, "SWT.TOGGLE");
        // 设置对齐
        createButton(shell, SWT.LEFT, "SWT.LEFT");
        createButton(shell, SWT.RIGHT, "SWT.RIGHT");
        createButton(shell, SWT.CENTER, "SWT.CENTER");
        // 设置外观风格
        createButton(shell, SWT.FLAT, "SWT.FLAT");
        createButton(shell, SWT.BORDER, "SWT.BORDER");

        shell.open();
        while (!shell.isDisposed()) {
            while (!display.readAndDispatch()) {
                display.sleep();
            }
        }
        shell.dispose();
    }

    private static void createButton(Shell parent, int style, String text) {
        Button button = new Button(parent, style);
        button.setText(text);
        button.pack();
    }
}

效果
在这里插入图片描述
SWT提供了丰富的按钮类型,本文考虑篇幅,只选择 普通,单选,多选 按钮着重讲解,感兴趣的读者可以自行编码测试。

1.1 普通按钮

Button button = new Button(shell, SWT.PUSH)

SWT.PUSH创建普通按钮,具体样式如下

在这里插入图片描述
代码

Button b1 = new Button(shell, SWT.PUSH | SWT.LEFT);
b1.setText("SWT.LEFT");
b1.pack();

Button b2 = new Button(shell, SWT.PUSH | SWT.CENTER);
b2.setText("SWT.CENTER");
b2.pack();

Button b3 = new Button(shell, SWT.PUSH | SWT.RIGHT);
b3.setText("SWT.RIGHT");
b3.pack();

1.2 单选按钮

Button button = new Button(shell, SWT.RADIO);
样式
在这里插入图片描述
代码

Button b1 = new Button(shell, SWT.RADIO| SWT.LEFT);
b1.setText("SWT.LEFT");
b1.pack();

Button b2 = new Button(shell, SWT.RADIO| SWT.CENTER);
b2.setText("SWT.CENTER");
b2.pack();

Button b3 = new Button(shell, SWT.RADIO| SWT.RIGHT);
b3.setText("SWT.RIGHT");
b3.pack();

这三个按钮只允许一个被选择,前提是他们必须在同一个组内,否则互不影响。

不在同一个组的单选按钮

// 创建3个组
Composite g1 = new Composite(shell, SWT.NONE);
Composite g2 = new Composite(shell, SWT.NONE);
Composite g3 = new Composite(shell, SWT.NONE);

// 绑定组1
Button b1 = new Button(g1, SWT.RADIO| SWT.LEFT);
b1.setText("SWT.LEFT");
b1.pack();

// 绑定组2
Button b2 = new Button(g2, SWT.RADIO| SWT.CENTER);
b2.setText("SWT.CENTER");
b2.pack();

// 绑定组3
Button b3 = new Button(g3, SWT.RADIO| SWT.RIGHT);
b3.setText("SWT.RIGHT");
b3.pack();

在这里插入图片描述
三个按钮分别属于不同的组,他们是否选择不会影响到其他单选按钮。

tip:

  • 请注意,在SWT中,在同一组的按钮,才有单选的功能。对于不同组的单选按钮,组内按钮选择与否不会影响到其他组的单选按钮
  • 在SWT中具体表现为面板容器类。面板容器类可以分为以下几种
    • 面板类(Composite)
      • 分组框(Group)
      • 选项卡(TabFolder)
      • 自定义选项卡(CTabFolder)
      • 分割窗(SashForm)
      • 自定义分割框(CBanner)
      • 滚动面板(ScrolledComposite)

1.3 多选按钮

Button button = new Button(shell, SWT.CHECK);

效果
在这里插入图片描述
代码

Button b1 = new Button(shell, SWT.CHECK| SWT.LEFT);
b1.setText("SWT.LEFT");
b1.pack();

Button b2 = new Button(shell, SWT.CHECK| SWT.CENTER);
b2.setText("SWT.CENTER");
b2.pack();

Button b3 = new Button(shell, SWT.CHECK| SWT.RIGHT);
b3.setText("SWT.RIGHT");
b3.pack();

2. 文字风格

样式说明
SWT.LEFT文本左对齐
SWT.CENTER文本居中
SWT.RIGHT文本右对齐

3. 按钮外观风格

样式说明
SWT.FLAT按钮轻盈的效果(没啥用)
SWT.NONE按钮不具有任何效果
SWT.BORDER按钮具有边框

代码

Button b1 = new Button(shell, SWT.PUSH| SWT.FLAT);
b1.setText("SWT.FLAT");
b1.pack();

Button b2 = new Button(shell, SWT.PUSH | SWT.NONE);
b2.setText("SWT.None");
b2.pack();

Button b3 = new Button(shell, SWT.PUSH| SWT.BORDER);
b3.setText("SWT.BORDER");
b3.pack();

样式
在这里插入图片描述

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

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

相关文章

SpringBoot将第三方的jar中的bean对象自动注入到ioc容器中

新建一个模块,做自动配置 config:需要准备两个类,一个自动配置类,一个配置类 CommonAutoConfig:此类用于做自动配置类它会去读取resoutces下的META-INF.spring下的org.springframework.boot.autoconfigure.AutoConfig…

NoSQL基本内容

第一章 NoSQL 1.1 什么是NoSQL NoSQL(Not Only SQL)即不仅仅是SQL,泛指非关系型的数据库,它可以作为关系型数据库的良好补充。随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,…

苹果macOS 恶意软件家族被曝光:通过破解软件分发,可窃取敏感信息

卡巴斯基安全实验室近日发布博文,发现了一种针对苹果 macOS 设备的新型恶意软件家族,并提醒苹果 Mac 用户谨慎下载破解软件。 报告称这种新型恶意软件家族高度复杂,主要伪装成为各种知名 macOS 软件的破解版分发,用户下载恶意 PKG…

InitVerse:为云计算服务带来更高的透明度和可验证性

InitVerse:为云计算服务带来更高的透明度和可验证性 在云计算服务领域,透明度和可验证性是构建信任的关键要素。传统的云计算市场往往缺乏透明度,用户难以了解其数据和计算资源的实际使用情况。然而,通过利用区块链技术&#xff0…

2024.1.27 GNSS 学习笔记

1.精确的描述轨道的一组数据(星历)是实现精确定位与导航的基础。 2.GNSS卫星广播星历的提供方式一般有两种:一种是提供开普勒轨道参数和必要的轨道摄动改正项参数,如GPS、BDS、Galileo三大系统采用此种模式,还有QZSS系统;另一种是…

苹果提审被拒反馈崩溃日志.text | iOS 审核被拒crashLog

iOS审核人员拒绝后每个截图,只给了几个text文件,这种情况就是审核的时候运行你的代码,崩溃了。 仅仅看text文件,是看不出所以然来的,所以我们要将日志转换成.crash格式 1.将.text文件下载下来,将 .text手动…

快快销ShopMatrix 分销商城多端uniapp可编译5端-代理商收益管理:差价奖励和销售额统计

代理商收益管理是一种针对代理商的利润分配模式,主要通过差价奖励和销售额统计来实现。这种模式的核心思想是通过激励代理商的销售行为,提高代理商的积极性和销售效率,从而实现整个销售网络的增长。 差价奖励是代理商收益管理中的一种常见方…

Pyecharts 风采:从基础到高级,打造炫酷象形柱状图的完整指南【第40篇—python:象形柱状图】

文章目录 引言安装PyechartsPyecharts象形柱状图参数详解1. Bar 类的基本参数2. 自定义图表样式3. 添加标签和提示框 代码实战:绘制多种炫酷象形柱状图进阶技巧:动态数据更新与交互性1. 动态数据更新2. 交互性设计 拓展应用:结合其他图表类型…

MySQL的外键和连接,如何做到关联查询?

目录 一、MySQL介绍 二、什么是外键 三、什么是连接 四、如何实现关联查询 一、MySQL介绍 MySQL是一种开源的关系型数据库管理系统,它是目前最流行的数据库之一。MySQL由瑞典MySQL AB公司开发,后被Sun Microsystems收购,随后又被Oracle收…

Java基础知识-异常

资料来自黑马程序员 异常 异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是: 异常 :指的是程序在执行过程中,出现的非正常的情况,…

【单片机】使用AD2S1210旋变芯片读取转子位置和速度

历时两周的反复调试,终于跑通了。只能说第一次做这种小工程确实缺乏经验,跟书本上学的还是有些出入。做下记录,方便后面来查看。 0. 实验要求 基于STM32单片机,使用AD2S1210旋变芯片读取电机转子位置和速度。   硬件设施&#x…

生信技能树--转录组--个人笔记

这周主要内容是学习转录组的比对,选择的软件为hisat2,该笔记仅供个人参考谨慎搬运代码。 # hisat2 可以快速准确地将测序得到的 RNA 片段(reads)比对到参考基因组,从而确定这些RNA 片段在基因组上的精确位置&#xff…

MYSQL表的约束详解!

文章目录 前言一、空属性二、默认值三、列描述四、zerofill五、主键六、自增长七、唯一键八、外键 前言 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据…

excel统计分析——卡方检验(基本原理)

参考资料:生物统计学 卡方检验(chi-square test)又称检验,是英国数理统计学家Karl Pearson推导出来的,该方法是处理分类变量或离散型数据的一类重要方法。分类变量或离散型数据时生物学和医学领域常见的数据类型。 1、…

ETCD高可用架构涉及常用功能整理

ETCD高可用架构涉及常用功能整理 1. etcd的高可用系统架构和相关组件1.1 Quorum机制1.2 Raft协议 2. etcd的核心参数2.1 常规配置2.2 特殊优化配置2.2.1 强行拉起新集群 --force-new-cluster2.2.2 兼容磁盘io性能差2.2.3 etcd存储quota 3. etcd常用命令3.1 常用基础命令3.1.1 列…

人脸识别 FaceNet人脸识别(一种人脸识别与聚类的统一嵌入表示)

人脸识别 FaceNet人脸识别(一种人脸识别与聚类的统一嵌入表示) FaceNet的简介Facenet的实现思路训练部分 FaceNet的简介 Facenet的实现思路 import torch.nn as nndef conv_bn(inp, oup, stride 1):return nn.Sequential(nn.Conv2d(inp, oup, 3, stride…

C++20 高级编程

文章目录 前言前奏lambda浅谈std::ref的实现浅谈is_same浅谈std::function的实现std::visit 与 std::variant 与运行时多态SFINAE类型内省标签分发 (tag dispatching)软件设计六大原则 SOLID To be continue.... 前言 C20 是C在C11 之后最大的一次语言变革, 其中引入了大量具有…

Python网络爬虫实战——实验7:Python使用apscheduler定时采集任务实战

【实验内容】 本实验主要介绍在Django框架中使用APScheduler第三方库实现对数据的定时采集。 【实验目的】 1、掌握APScheduler库的使用; 2、学习在Django中实现多个定时任务调度; 【实验步骤】 步骤1 Apscheduler简介与特点 步骤2 Apscheduler基本…

【开源】基于JAVA语言的公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

字符串相关的函数和内存块相关函数

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…