第六条:天天用到的对话框是怎么做的

天天基金爬虫——天天基金爬取基金信息统计持仓净值 从天天基金爬取基金信息统计持仓净值一、获取网页1、打开一个基金网页2、分析页面3、获取页面二、解析数据1、查看需要的基本信息三、统计求和1、步骤2、完整代码四、喜欢的话请点个关注吧!不要忘了长按点赞一键三连哦! 一、获取网页 1、打开一个基金网页 我们先打开天天基金网,然后随便打开一个基金的页面。例如161725招商中证白酒指数。 链接: http://fund.eastmoney.com/161725.html. 我们发现天天基金的网址构成是http://fund.eastmoney.com/+基金编 阅读详情

作者:梁祺 (eclipsesbs@gmail.com)

来自:http://www.benisoft.net/day6/index.html


昨天我们在介绍布局时,已经接触过对话框了,今天我们来看一下在实际应用中,对话框是怎么工作的。对话框一般是提供给用户和应用程序交互的窗口,它分为模态对话框(Modal)和非模态对话框(Non-modal)。

  • 模态对话框:用户必须完成对话框内的操作,关闭对话框以后才能继续操作对话框以外的应用程序。
  • 非模态对话框:用户不必关闭对话框,也能继续操作对话框以外的应用程序。
一般情况,我们用到的都是模态对话框,所以我们主要介绍模态对话框,如果没有特别说明,对话框就指模态对话框。

在Itinerary的例子里,当用户创建一个出行计划时,我们使用对话框让用户输入新建出行计划的名称和简单描述,点击OK来创建新的出行计划。

NewItineraryAction打开对话框New Itinerary(eclipse.tutorial.itinerary.dialogs.NewItineraryDialog),当用户输入出行计划的名称,点击OK,从对话框对象dialog获取新创建的Itinerary对象,代码如下。

public class NewItineraryAction  implements IWorkbenchWindowActionDelegate {
        ...
     public void run(IAction action) {
        NewItineraryDialog dialog =  new NewItineraryDialog(window.getShell());
         int result = dialog.open();
         if (result == Window.OK) {
            Itinerary itinerary = dialog.getItinerary();
            ...
        }
    }

NewItineraryDialog有三个成员变量。

  • itinerary是新建的出行计划Itinerary对象,它是对话框的输出。
  • textName和textDescription是两个UI控件成员变量,分别用以接受用户输入出行计划名称和简单描述。
public class NewItineraryDialog  extends Dialog {

     private Itinerary itinerary;
     private Text textDescription;
     private Text textName;

对话框一个重要的部分就是控件的布局,一般都需要花费大量精力来设计对话框的布局,并加以实现,我们这个例子比较简单。使用一个两列的GridLayout,第一行布置出行计划名称的控件,第二行布置描述的控件。

     protected Control createDialogArea(Composite parent) {
        Composite composite =  new Composite(parent, SWT.NONE);
        GridLayout layout =  new GridLayout(2,  false);
        composite.setLayout(layout);
        composite.setLayoutData( new GridData(SWT.FILL, SWT.FILL,  true,  true, 1,
                1));

         // Name
        Label label =  new Label(composite, SWT.NONE);
        label.setText(\ "Name: \");
        label.setLayoutData( new GridData(SWT.BEGINNING, SWT.BEGINNING,  false,
                 false, 1, 1));

        textName =  new Text(composite, SWT.BORDER);
        textName.setLayoutData( new GridData(SWT.FILL, SWT.BEGINNING,  true,
                 false, 1, 1));

         // Description
        label =  new Label(composite, SWT.NONE);
        label.setText(\ "Description: \");
        label.setLayoutData( new GridData(SWT.BEGINNING, SWT.BEGINNING,  false,
                 false, 1, 1));

        textDescription =  new Text(composite, SWT.BORDER | SWT.MULTI);
        textDescription.setLayoutData( new GridData(SWT.FILL, SWT.FILL,  true,
                 true, 1, 1));

         return composite;
    }

对话框另一个部分是对用户输入进行验证,在很多应用里,这部分是比较繁琐的,关键是心里需要有个清晰的定义,有文档描述就更好(这个好像只有产品级的应用里才会专门有人做这个设计)。这个例子里要求出行计划名称是必须输入的,实现也很简单,如果用户没有输入出行计划名称,就把OK按钮变灰,无法创建出行计划。这样做不太严谨,好在例子程序大家也能看明白,所以问题不大。比较好的做法是用TitleAreaDialog,用警告的方式告诉用户需要输入出行计划名称。

既然对话框一开始就没有出行计划名称,我们就需要在OK按钮创建完成后立刻将它变灰,这个需要重载createButtonsForButtonBar(),先调用父类的createButtonsForButtonBar()来创建Cancel按钮和OK按钮,然后将OK按钮变灰。另外还需要为textName添加事件处理器来获取文本框的修改事件,如果文本框内容为空,将OK按钮变灰,否则,恢复OK按钮。

     protected void createButtonsForButtonBar(Composite parent) {
         super.createButtonsForButtonBar(parent);
        
        getButton(OK).setEnabled( false);
    }

     void addListeners() {
        textName.addModifyListener( new ModifyListener() {

             @Override
             public void modifyText(ModifyEvent e) {
                getButton(OK).setEnabled(! textName.getText().isEmpty());
            }});
    }

对话框最后一部分是从控件中获取数据,通过某种方式返回给调用者。在这个例子里,当用户输入出行计划名称和描述,点击OK按钮后,Eclipse会调用okPressed()方法。在这个方法里,从textName和textDescription获取名称和简单描述后,创建Itinerary对象,保存在itinerary成员变量上,最后通过getItinerary()方法传递出去。这是一个常规的做法。

     @Override
     protected void okPressed() {
        String name = textName.getText();
        String description = textDescription.getText();
        itinerary =  new Itinerary(name);
        itinerary.setDescription(description);

         super.okPressed();
    }

对话框我们就介绍到这里,其实很简单,就三个部分,控件布局,输入验证,以及返回数据给调用者。不过实现和测试的工作量都比较大,估计工作量的时候要有充分的余量。

用Python写一个天天酷跑 感觉上次写的植物大战僵尸与俄罗斯方块的反应还不错,这次这个文章就更有动力了 这次就写一个天天酷跑吧 写出来的效果图就是这样了 下面就更新一下全部的代码吧 还是老样子先定义 import pygame,sys import random 写一下游戏配置 width = 1200 #窗口宽度 height = 508 #窗口高度 size = width, height score=None #分数 myFont=myFont1=N 阅读详情

相关推荐

python爬取天天基金网全部基金的历史全部净值

1.认识天天基金网的数据接口 2 3 在这里插入代码片 # -*- coding: utf-8 -*- """ Created on Mon Aug 26 20:02:27 2019 @author: yys """ import pandas as pd import requests import re from lxml import etree found_code='111111...

yys1164922014的博客 2万+

java消息对话框用什么做_Java如何创建消息对话框?

本示例演示如何使用JOptionPane类方法创建消息对话框。在下面的代码,你会看到使用的JOptionPane.showMessageDialog(),JOptionPane.showInputDialog()和JOptionPane.showConfirmDialog()。packageorg.nhooo.example.swing;importjavax.swing.*;importj...

weixin_39531594的博客 404

Python-天天基金网爬虫分析

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。2.主题式网络爬虫爬取的内容与数据特征分析:通过访问天天基金的网站,爬取相对应的信息,最后保存下来做可视化分析。难点:网站的爬取与数据筛选。“”“ua大列表”“”

Avaricious_Bear的博客 2914

JFaces组件 TitleAreaDialog一些用法

Dialog是SWT和JFace的一个重要的组成部分,我们在开发 Plug-in或RCP的时候也经常会用到它们。这篇随笔不会介绍 SWT的Dialog,因为我想很多人都已经非常熟悉它了。在这里,我要讨论的是JFace的Dialog,或者更进一步说是JFace的 TitleAreaDialog。什么是TitleAreaDialog呢?想想我们常常用到的New XX Wizard就知道了。在我们创...

小袋子的IT部落 292

天天基金可爬取主要URL

首先天天基金robots.txt内容如下 User-agent: * Disallow: /*spm=* Disallow: /*aladin 表示不限制爬虫方式,不能爬取根目录下包含字符串'spm='的文件和根目录下'aladin'结尾的文件 主要URL 公司列表:http://fund.eastmoney.com/js/jjjz_gs.js 基金列表:http://fund...

qq_40405705的博客 3404

python爬取天天基金网_Python爬虫日记二:爬取天天基金网

一、前言这次的实验的任务是要爬取天天基金网的6000多个基金,并把爬取的数据存放到Mongodb数据库中,数据以供下次分析使用。而此次 需要采集的数据来自两个页面页面1:从该页面爬取 所有基金代码、基金名称、基金URL页面1页面2:从上个页面获取的基金URL地址爬取对应基金的近1个月、近3个月、近6个月、近1年、近3年、成立来的变动百分比。图片.png二、运行环境Python3requestsMo...

weixin_30974373的博客 1408

【C项目】天天酷跑(上篇)

今天我们学习到了障碍物,背景,人物的制作,这里面有很多的方法值得我们学习与总结。

2401_86738532的博客 6392

python爬取天天基金网AJax表格

Abstract:    笔者想从天天基金网(http://fund.eastmoney.com/f10/jjjz_001631.html)爬取某只基金的历史净值进行数据分析,发现天天基金网使用的是JavaScript,其历史净值表格使用的Ajax技术,只采用BeautifulSoup无法进行爬取。最后笔者通过selenium模拟表格“下一页”按钮的点击,然后采用BeautifulSoup解析se...

Shine4YG的博客 3079

天天基金数据接口的处理

最近在分析基金的相关数据,曾一度为找不到基金数据而发愁。目前我常用的数据平台有两个,一个是Tushare平台,但是我的积分不够,因此无法调取基金数据。另一个是优矿平台,但是优矿平台不能在本地调取数据,只能在优矿平台上面调取,然后保存到本地。后来在网上发现了天天基金的数据接口,该接口返回的是文本数据,需要对原始数据进一步处理才可以使用。网上许多大佬都只是给了调用链接,并没有进一步分享数据处理的步骤。在这里,分享一下我的数据处理步骤,以方便大家直接调用基金数据。

虹之间的博客 1万+

python爬取天天基金历史净值_用Python抓取天天基金网基金历史净值数据

请关注微信公众号:金融数学 FinancialMathematics玩基金的朋友应该都深有体会,2018是相当惨淡的一年,尤其下半年,能够保本就不错了。2019迎来了开门红,从2月11日到14日,连续四个交易日整体翻红,“逢九必涨”,2019是不是可以有些期待呢?“天天基金”网站可以查询基金历史净值信息,这里利用网站提供的数据接口,实现基金净值查询,并做一些简单的分析。数据是否准确,分析是否到位,...

weixin_36488589的博客 5378

深入解析SerDes系统中的时钟数据恢复电路(CDR)——基于Cadence的PLL/Bang-Bang/PS-PI架构实现与仿真

本文深入解析SerDes系统中的时钟数据恢复电路(CDR),重点探讨基于Cadence平台的PLL、Bang-Bang和PS-PI三种架构的实现与仿真。通过详细的技术对比和工程实践案例,揭示CDR在高速串行通信中的关键作用,并提供TSMC 28nm工艺下的优化策略与故障排查经验,助力工程师应对10Gbps以上SerDes设计挑战。

weixin_29202687的博客 249

天天生鲜项目——登录页面

6、login.html 登录页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lan...

Cherry的博客 5944

(10)Proteus 8.9上的STM32仿真系列(HAL)---freertos

实验设计:通过cubemxide生成freertos工程,然后创建一个 pc13 led灯间隔200ms闪烁的任务。非常遗憾的是proteus8.9仿真失败,实物上没有问题,但还是把流程过一遍。 一、原理图 实物是淘宝上stm32f103 c8t6的核心板,proteus上没有这个芯片,这里图上大概表示一下,用的是核心板自带的pc13引脚的led灯。 二、cubemxide配置 1.RCC如之前工程一样配置 2、配置SYS timebase Source不要使用systick,自己选择一个定时器,我这

qq_35442550的博客 7342

python爬虫,用scrapy爬取天天基金

python爬虫,用scrapy爬取天天基金

Marmot01的博客 5645

避坑指南:MTK平台Widevine L1密钥安装全流程详解(含SP META工具使用与Log分析)

本文详细解析了MTK平台实现Widevine L1认证的全流程,涵盖密钥申请、格式转换、安全烧录等关键步骤,特别针对Trustonic TEE环境下的SP META工具使用与日志分析提供实用指南。帮助开发者规避常见错误,确保DRM密钥安全部署,满足高端内容保护需求。

weixin_27219587的博客 476

用Python模拟随机游走:从一维到三维,直观理解马尔可夫链的常返性

本文通过Python模拟一维到三维的随机游走,直观展示马尔可夫链的常返性特性。使用NumPy和Matplotlib构建模拟器,揭示不同维度下随机游走的返回概率差异,帮助读者理解为什么一维和二维游走具有常返性,而三维游走可能永远迷失。文章包含完整的代码示例和可视化技巧,适合概率论和Python编程爱好者学习实践。

weixin_28694295的博客 399

python爬取天天基金历史净值_python爬取天天基金网全部基金的历史全部净值

**天天基金网历史净值爬取****1.认识天天基金网的数据接口1,这是所有基金代码、基金名称简称的集合http://fund.eastmoney.com/js/fundcode_search.js 数据量是接近9000条数据。这个可以简单的用个正则表达,re.findall("(.*?)",url_text)匹配一下存在电脑上。然后再弄成excel文件。比较简单。2,基金历史净值的接口url=‘h...

weixin_40001442的博客 4136

OpenClaw的引导配置(onboard)流程

脚本安装的直接安装完到引导配置界面,其他安装方式还可以直接命令到配置。

supersolon的专栏 1324

天天酷跑Python

天天酷跑小游戏 (Python) 目 录 一.选题背景…………………………………………1 二.设计流程…………………………………………2 2.1算法思想……………………………………………………………… 2 2.2类的设计……………………………………………………………… 2 2.3界面设计……………………………………………………………… 3 2.4 pygame安装………………………………………………………… 3 三.测试结果………………………………………… 6 3.1游戏界面………………………………………

weixin_44565532的博客 1879

UG\NX二次开发 获取三平面交点

//如果返回值不为0 则此三个面没交点 int three_faces_point(tag_t tagFace1, tag_t tagFace2, tag_t tagFace3, double *dou_x, double *dou_y, double *dou_z)

王牌飞行员_里海的博客 674

开源Harness项目DeerFlow 2.0,让智能体几乎能完成任何复杂任务

从提示工程到上下文工程,再到如今的 Harness,这条演进路径的本质是从“教模型如何理解人类”迈向“为模型构建一个可执行、可信赖、可长期运转的数字世界”。 当越来越多像 DeerFlow 2.0 这样的 Super Agent Harness 走向普及,AI 将真正进化为能理解、会规划、可执行、敢交付、长期负责的成熟生产力形态。

技术引领业务创新 519

python天天向上和天天向下代码解析_天天向上,天天向下

'人真的是一种很怪的东西,有的时候天天向上,有的时候天天向下'在'我的团长我的团'中扫描到这句话的时候.就喜欢上了这种生活的味道,新娃子的不安宁给这种味道画出了一幅深浅不一的素描卷.伤感的午后,堆积着午夜的寂寥,牵引着心灵深处最柔弱的情感,现实的无可奈何就像显微镜下的菌虫,蠕动着放大了的凶恶,让人不自主的阵阵发冷,那些光彩夺目的表面被挤进纵横交错的沟壑,灰蒙蒙的天,没有泪水,也没有阳光.当空虚,突...

weixin_39812039的博客 1304

SGP4/SDP4详解

**SGP4** (Simplified General Perturbations Version 4) 和 **SDP4** (Simplified Deep-space Perturbations Version 4) 是一组**解析轨道预报模型**,用于预测地球轨道卫星的位置和速度。它们是北美防空司令部(NORAD)维护的**TLE**数据格式的标准配套算法。 简单来说:**TLE是卫星轨道的"身份证",而SGP4/SDP4是解读这张身份证的"说明书"**。

ScilogyHunter的博客 589

简单粗糙试做天天象棋棋子识别

2)这里需要注意的是引挚的座标正方向是以红方角度为正方向的,也就是FEN局面输入始终以从黑向红Z形扫描输入的,皮卡鱼的输出座标也是从红方角度从左向右为a至i列,从下向上为0至9行,所以在棋局为上红下黑为方便分析可自己转换补码。1、这里要取棋子图片的大小固定为36x36,所以需要将象棋窗口缩放在适合大小,这样子截出来的棋子图片才为标准统一的,所以用FindWindow找到天天象棋的句柄,然后再SetWindowPos将窗口缩放到指定大小。4、分类使用的是rubygems的rumale中的支持向量机。

weixin_45879344的博客 823

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水

天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天天都在水天

lijiale20150909的博客 127万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 第五天:控件布局怎么这么麻烦
下一篇: 第七天:JFace对话框真的很好用
std3lqi
博客等级 码龄24年 1粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值