java day10

news2024/11/19 19:34:32

第10章 创建Swing界面

  • 10.1 Swing的特性
    • 10.1.1 标准对话框
      • 1. 确认对话框
      • 2. 输入对话框
      • 3.消息对话框
      • 4. 选项对话框
    • 10.1.2 使用对话框
    • 10.1.3 滑块
    • 10.1.4 滚动窗格
    • 10.1.5 工具栏
    • 10.1.6 进度条
    • 10.1.7 菜单
    • 10.1.8 选项卡式窗格

10.1 Swing的特性

10.1.1 标准对话框

JOptionPane类提供了几个可用于创建标准对话框的方法。标准对话框是一个小窗口,用于询问问题、向用户发出警告或提供重要消息。下面是JOptionPane提供的4个标准对话框类:

  • ConfirmDialog:
    询问问题,包含用于进行Yes、No和Cancle等响应的按钮
  • InputDialog:
    提示用户输入文本
  • MessageDialog:
    显示消息
  • OptionDialog:
    包含上面三种对话框

1. 确认对话框

调用showConfirmDialog(Component,Object)

  • component参数指出了包含对话框的容器,确定对话框窗口应显示在屏幕的什么位置。如果为null或指定的容器不是JFrame对象,对话框将显示在屏幕中央
  • object可以是字符串、组件或Icon对象。如果是一个字符串,其中的文本将显示在对话框里;如果是一个组件或Icon,则将显示该对象。

该方法返回下列5个可能的整数值之一:
YES_OPTION, NO_OPTION, CANCEL_OPTION,OK_OPTIONCLOSED_OPTION

eg:

showConfirmDialog(Component,Object,string,int,int)
//后三个参数:
//string: 将显示在对话框标题栏中的字符串
//int :指出将显示哪些选项按钮,应为类常量 YES_NO_CANCEL_OPTION或YES_NO_OPTION;
// int:一个描述对话框类型的整数,值为类变量ERROR_MESSAGE、INFORMATION_MESSAGE、PLAIN_MESSAGE、QUESTION_MESSAGE或WARNING_MESSAGE
int response=JOptionPane.showConfirmDialog(null,
	"Error reading file. Want to try again?",
	"FIle Input Error",
	JOptionPane.YES_NO_OPTION,
	JOptionPane.ERROR_MESSAGE);

2. 输入对话框

输入对话框询问一个问题,并使用文本框来存储用户的响应。要调用输入对话框,最简单的方式是调用方法showInputDialog(Component,Object).

showInputDialog(Component,Object,String,int)
// 方法倒数两个参数与上述确认对话框方法第三个和第五个参数相同

String response =JOptionPane.showInputDialog(null,
	"What is your ZIP code?",
	"Enter ZIP Code",
	JOptionPane.QUESTION_MESSAGE);

3.消息对话框

消息对话框是一个显示信息的简单窗口,可使用showMessageDialog(Component,Object)来创建。也可以使用方法showMessageDialog(Component,Object,String,int)来创建消息对话框,只是不返回任何值

JOptionPane.showMessageDialog(null,
	"An asteroid has destroyed the earth.",
	"Asteroid Destruction Alert",
	JOptionPane.WARING_MESSAGE);

4. 选项对话框

选择对话框,它融其他所有对话框的特性于一体。这种对话框可使用方法showOptionDialog(Component,Object,String,int,int,Icon,Object[],Object)来创建。

  • 对话框的父组件;
  • 要显示的文本、图标或组件
  • 要在标题栏中显示的字符串
  • 对话框类型,值为类常量YES_NO_OPTION或YES_NO_CANCLE_OPTION,如果要使用其他按钮,则为字面量0
  • 要显示的图标,值为类常量ERROR_MESSAGE、INFORMATION_MESSAGE、PLAIN_MESSAGE
  • 要显示的Icon对象,它将替换前一个参数指定的图标
  • 一个对象组,其中存储了表示对话框中选项的组件和其他对象
  • 没有使用YES_NO_OPTION或YES_NO_CANCEL_OPTION时,表示默认选项的对象
String[] gender={
	"Male",
	"Female",
	"None of Your Business"
};
int response = JOptionPane.showOptionDialog(null,
	"What is your gender?",
	"Gender",
	0,
	JOptionPane.INFORMATION_MESSAGE,
	null,
	gender,
	gender[2]);
System.out.println("You chose "+gender[response]);

10.1.2 使用对话框

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

public class FeedInfo extends JFrame{
    private JLabel nameLabel = new JLabel("Name: ",SwingConstants.RIGHT);
    private JTextField name;
    private JLabel urlLabel = new JLabel("URL: ",SwingConstants.RIGHT);
    private JTextField url;
    private JLabel typeLabel = new JLabel("Type: ",SwingConstants.RIGHT);
    private JTextField type;

    public FeedInfo(){
        super("Feed Information");
        setSize(400,145);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLookAndFeel();
        // Site name
        String response1=JOptionPane.showInputDialog(null,"Enter the site name:");
        name = new JTextField(response1,20);

        // site address
        String response2 = JOptionPane.showInputDialog(null,"Enter the size address:");
        url = new JTextField(response2,20);

        // site type
        String[] choices = {"Personal","Commercial","Unknown"};
        int response3 = JOptionPane.showOptionDialog(null,
                "What type of site is it?",
                "Site Type",
                0,
                JOptionPane.QUESTION_MESSAGE,
                null,
                choices,
                choices[0]);
        type = new JTextField(choices[response3],20);

        setLayout(new GridLayout(3,2));
        add(nameLabel);
        add(name);
        add(urlLabel);
        add(url);
        add(typeLabel);
        add(type);
        setLookAndFeel();
        setVisible(true);
    }

    private void setLookAndFeel(){
        try{
            UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
            SwingUtilities.updateComponentTreeUI(this);
        }catch (Exception exc){
            System.err.println("Couldn't use the system "+"look and feel: "+exc);
        }
    }

    public static void main(String[] args) {
        FeedInfo frame=new FeedInfo();
    }
}

10.1.3 滑块

在Swing中,滑块是使用类JSlider来实现的,它让用户能够通过滑动控制来设置一个位于最大值和最小值之间的值。很多时候都可以使用滑块来获取数字输入,其优点是能够限制可输入的值。

默认情况下,滑块是水平方向的,但可以使用接口SwingConstants的两个类常量(HORIZONTSL和VERTICAL)来显示地设置其方向。

  • JSlider(int):一个指定方向的滑块,最小值、最大值和初始值分别为0、100和50
  • JSlider(int,int):一个指定最小值和最大值的滑块。
  • JSlider(int,int, int):一个具有指定的最小和最大值以及初始值的滑块。
  • JSlider(int,int, int, int):一个具有指定的方向。最小值、最大值和初始值的滑块。

下面是几个JSlider的方法:

  • setMajorTickSpacing(int): 按指定的间隔放置主刻度线
  • setMinorTickSpacing(int):按指定的间隔放置次刻度线
  • setPaintTicks(boolean):决定是否显示刻度线
  • setPaintLabels(boolean):决定是否显示数字标签
import javax.swing.*;

public class Slider extends JFrame{
    public Slider(){
        super("Slider");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLookAndFeel();
        JSlider pick=new JSlider(JSlider.HORIZONTAL,0,30,5);
        pick.setMajorTickSpacing(10);
        pick.setMinorTickSpacing(1);
        pick.setPaintTicks(true);
        pick.setPaintLabels(true);
        add(pick);
        pack();
        setVisible(true);
    }
    private void setLookAndFeel(){
        try{
            UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
            SwingUtilities.updateComponentTreeUI(this);
        }catch(Exception exc){
            System.err.println("Counldn't use the system "+"look and feel: "+exc );
        }
    }

    public static void main(String[] args) {
        Slider frame=new Slider();
    }
}

10.1.4 滚动窗格

可以使用构造函数ScrollPane(Object)来创建滚动窗格,其中Object表示能被滚动的组件。

JTextArea textBox = new JTextArea(7,30);
JScrollPane scroller = new JScrollPane(textBox);
mainPane.add(Scroller);
  • HORIZONTAL_SCROLLBAR_ALWAYS
  • HORIZONTAL_SCROLLBAR_AS_NEEDED
  • HORIZONTAL_SCROLLBAR_NEVER
  • VERTICAL_SCROLLBAR_ALWAYS
  • VERTICAL_SCROLLBAR_AS_NEEDED
  • VERTICAL_SCROLLBAR_NEVER
    这些常用于构造函数ScrollPane(object,int,int)中,
JScrollPane scroller =new JScrollPane(textBox,
	VERTICAL_SCROLLBAR_ALWAYS,
	HORIZONTAL_SCROLLBAR_NEVER);

10.1.5 工具栏

在Swing中,使用JToolBar类来创建工具栏,后者是一个容器,它将多个组件组织为一行或一列。被组织的通常是按钮。

很多时候工具栏是水平的,但可以使用接口SwingConstants的类常量HORIZONTAL或VERTICAL来显示地设置其方向。
构造函数包括:

  • JToolBar()
  • JToolBar(int),指定方向

Swing的工具栏也可停放到新窗口内,从而与原来的窗口分离。为了获得最佳结果,应使用布局管理器类BorderLayout将可停放的JToolBar组件放置到容器中。边界布局将容器分为5个区域:北、南、东、西、中,其中每个有方向的组件都占据了它所需的空间,剩下的分配给中央区域。
在这里插入图片描述

10.1.6 进度条

在Swing中,进度条是使用类JProgressBar实现的。
构造函数包括

  • JProgressBar() ,创建一个新的进度条
  • JProgressBar(int, int),创建一个有指定的最小值和最大值的进度条
  • JProgressBar(int, int, int),创建一个有指定的方向、最小值和最大值的进度条

可以使用接口SwingConstants的类常量HORIZONTAL或VERTICAL来显示地设置其方向。

setMinimum(int)
setMaximum(int)
// 设置最小值和最大值。

setValue(int)
// 指定一个当前进度的值传递给它

setStringPainted(boolean)
// 设置标签显示已完成的任务比例,若为false不显示该标签

10.1.7 菜单

在java中,3种组件协同工作来支持菜单

  • JMenuItem: 菜单中的一个菜单项
  • JMenu: 一个下拉菜单,包含一个或多个JMenuItem组件、其他界面组件和分隔条
  • JMenuBar:包含一个或多个JMenu组件并显示其名称的容器
JMenuItem(String)
JMenuItem(Icon)
JMenuItem(String,Icon)
// 构造函数

addSeparator()
// 将分隔条加入到菜单末尾

setJMenuBar(JMenuBar)
// 调用框架的setJMenuBar(JMenuBar)方法

在这里插入图片描述

10.1.8 选项卡式窗格

选项卡式窗格是一组堆叠在一起的面板,用户每次只能查看其中的一个,在Swing中,这是由JTabbedPane类实现的

  • JTabbedPane(),创建一个选项卡式窗格,但不能滚动
  • JTabbedPane(int),创建一个选项卡式窗格,有指定的布局
  • JTabbedPane(int, int),创建一个有指定布局和滚动策略的选项卡式窗格

选项卡的布局参数有:JTabblePane.TOP、JTabblePane.BOTTOM、JTabblePane.LEFT或JTabbedPane.RIGHT

使用JTabbedPane.WRAP_TAB_LAYOUT来设置不滚动的选项卡式窗格,
使用JTabbedPane.SCROLL_TAB_LAYOUT来设置标签旁显示滚动箭头

创建选项卡式窗格后,调用addTab(String,Componet)方法来加入组件。其中String是标签显示的文本,而第二个参数是一个组件,它是窗格的选项卡之一,通常这是一个JPanel对象,但并非必须如此。

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

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

相关文章

HTML5 <rt> 标签、HTML5 <ruby> 标签

HTML5 <rt> 标签 实例 HTML5 <rt>标签用于表示为<ruby>标签中的注释内容。 一个 ruby 注释&#xff1a; <ruby> 漢 <rt> ㄏㄢˋ </rt> </ruby> 尝试一下 浏览器支持 IE 9、Firefox、Opera、Chrome 和 Safari 支持 <rt> 标…

增广拍卖——二跳页下的拍卖机制探索

1. 引言 本文提出的方案已被WSDM 2023接收&#xff0c;论文&#xff1a;Boosting Advertising Space: Designing Ad Auctions for Augment Advertising&#xff0c; 下载&#xff1a;https://dl.acm.org/doi/abs/10.1145/3539597.3570381 信息流产品为了保障用户体验通常会严格…

关于python爬虫解析的问题

在进行Python爬虫解析时&#xff0c;需要注意以下事项&#xff1a; 1、良好的网站使用协议&#xff1a;需要遵守网站的robots.txt文件&#xff0c;以确保你的爬虫程序不会将网站拦截下来。 2、编码问题&#xff1a;需要正确设置HTTP头和解析器的编码&#xff0c;以确保爬虫程…

低代码开发重要工具:jvs-logic(逻辑引擎)可视化设计要素

逻辑引擎可视化的交互 可视化的服务编排是逻辑引擎的核心功能&#xff0c;逻辑引擎的界面可视化设计是为了方便用户使用和操作逻辑引擎而设计的。一个好的界面设计能够提高用户的工作效率和使用体验&#xff0c;同时也能增加软件的可靠性和可维护性。 以下是逻辑引擎界面可视化…

python数据分析综合案列--星巴克门店数据分析及可视化

本实训针对一组关于全球星巴克门店的统计数据&#xff0c;分析了在不同国家和地区以及中国不同城市的星巴克门店数量。 获取数据&#xff0c;数据放在directory.csv 这个案例主要分为以下几个部分&#xff1a; 数据清洗和预处理&#xff1a;使用 Pandas 进行数据清洗和预处理&…

windows下安装emscripten

Qt系列文章目录 文章目录 Qt系列文章目录前言一、Emscripten SDK介绍二、Emscripten SDK安装Get the emsdk repoEnter that directory 前言 由于Web端需要处理大量图像&#xff0c;大量图片的分辨率8k*8k&#xff0c;使用Canvas API&#xff08;画布&#xff09;是在HTML5中新…

(二)app自动化脚本录制回放

上一篇&#xff1a;(一)app自动化测试环境搭建&#xff08;maciosairtest &#xff09;_airtest环境搭建_要开朗的spookypop的博客-CSDN博客 注&#xff1a;后续都是用IOS设备来介绍自动化测试&#xff0c;安卓就不赘述了。 接上一篇&#xff0c;搭建好自动化测试环境后&#…

如何去阅读Java源码,我总结了18条心法

大家好&#xff0c;我是Martin。 这篇文章我准备来聊一聊如何去阅读开源项目的源码。 在聊如何去阅读源码之前&#xff0c;先来简单说一下为什么要去阅读源码&#xff0c;大致可分为以下几点原因&#xff1a; 最直接的原因&#xff0c;就是面试需要&#xff0c;面试喜欢问源码…

Docker实战笔记4-安装jenkins

转载请标明出处&#xff1a;http://blog.csdn.net/zhaoyanjun6/article/details/130318679 本文出自【赵彦军的博客】 文章目录 拉取 jenkins 镜像排查问题验证结果总结 拉取 jenkins 镜像 在官方镜像仓库查询 jenkins 镜像 https://hub.docker.com/r/jenkins/jenkins 拉取镜…

linux 安装php8.1 ZipArchive和libzip最新版扩展安装

1、概述 安装前咱们先看下我本地环境 [rootelk php8]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.9 (Maipo) [rootelk php8]# [rootelk php8]# ./bin/php -v PHP 8.1.18 (cli) (built: Apr 17 2023 13:15:17) (NTS) Copyright (c) The PHP Group Z…

onnx手动操作

使用onnx.helper可以进行onnx的制造组装操作&#xff1a; 对象描述ValueInfoProto 对象张量名、张量的基本数据类型、张量形状算子节点信息 NodeProto算子名称(可选)、算子类型、输入和输出列表(列表元素为数值元素)GraphProto对象用张量节点和算子节点组成的计算图对象ModelP…

命令模式解读

问题引进 看一个具体的需求 1) 我们买了一套智能家电&#xff0c;有照明灯、风扇、冰箱、洗衣机&#xff0c;我们只要在手机上安装 app 就可以控制对这些家电工作。 2) 这些智能家电来自不同的厂家&#xff0c;我们不想针对每一种家电都安装一个 App&#xff0c;分别控制&…

HTTP相关知识

HTTP HTTP 是一种能够获取如 HTML 这样的网络资源的 protocol(通讯协议)。它是在 Web 上进行数据交换的基础&#xff0c;是一种 client-server 协议&#xff0c;也就是说&#xff0c;请求通常是由像浏览器这样的接受方发起的。一个完整的 Web 文档通常是由不同的子文档拼接而成…

苹果通讯录怎么备份?手机通讯录备份的方法看这里!

案例&#xff1a;手机通讯录怎么备份&#xff1f; 【友友们&#xff0c;想问下苹果手机的通讯录怎么样才能进行备份&#xff1f;可以解答我的疑惑吗&#xff1f;感谢&#xff01;】 在日常使用手机过程中&#xff0c;我们经常会遇到误删通讯录的情况。因此&#xff0c;备份通讯…

必须要知道的hive调优知识(上)

Hive数据倾斜以及解决方案 1、什么是数据倾斜 数据倾斜主要表现在&#xff0c;map/reduce程序执行时&#xff0c;reduce节点大部分执行完毕&#xff0c;但是有一个或者几个reduce节点运行很慢&#xff0c;导致整个程序的处理时间很长&#xff0c;这是因为某一个key的条数比其…

QT QPainter坐标变换绘图实例(五角星绘制)

1、绘制3个五角星的程序 创建一个基于 QWidget 的窗口的应用程序 &#xff0c;窗体上不放置任何组件。在 Widget 类的构造函数和paintEvent0事件中编写代码&#xff0c;代码内容如下。 Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(…

Keil生成.bin文件

1. 打开OptionsforTarget 对话框&#xff1a; 2 选择User&#xff1a; 3. 根据User页的配置还要配置Output页面&#xff0c;具体如下&#xff1a; 4. 点击OK确定&#xff0c;然后再重新编译则会按照上图中的配置路径生成.bin格式的文件了&#xff1a; Keil自带的fromelf.exe工具…

D. Ehab and the Expected XOR Problem(构造 + 异或和)

Problem - D - Codeforces 给出两个整数nn和xx&#xff0c;构造一个满足以下条件的数组&#xff1a; 对于数组中的任何元素aiai&#xff0c;1≤ai<2n1≤ai<2n&#xff1b; 没有非空的子段&#xff0c;其位数XOR值等于00或xx、 它的长度ll应该是最大的。 一个序列bb是一个…

flv转换mp4最简单方法,3个保姆级教程

flv转换mp4最简单方法你知道吗&#xff1f;今天小编就来分享分享啦&#xff0c;那么先来说说flv视频格式。这个格式大家可能知道的并不多&#xff0c;它最大的特点就是文件体积偏小&#xff0c;多以在线观看的时候加载速度非常快&#xff0c;它有效解决了视频在导入Flash后出现…

实施推荐系统过程中遇到的坑

引言 推荐系统本身很成熟&#xff0c;但是在落地过程当中&#xff0c;仍然会有很多困难。通过经历几个大型推荐系统项目&#xff0c;总结一些经验&#xff0c;帮助大家避坑。 01推荐系统的技术架构 推荐系统模块一般如上图所示&#xff0c;先通过召回模块&#xff0c;将候选…