当前位置: 首页 > news >正文

网站必须做公安备案么互联网营销工具有哪些

网站必须做公安备案么,互联网营销工具有哪些,搜索引擎市场份额2023,电子商务网站建设实训报告主要内容在SWT的线程开发中,基本思路是:将前台和后台分开为两个类;为后台处理开辟一个线程,让前台和后台处理相互不受影响;前台提供一些组件的操作方法,后台调用方法,并将执行情况写入到前台的组件中显示…

在SWT的线程开发中,基本思路是:将前台和后台分开为两个类;为后台处理开辟一个线程,让前台和后台处理相互不受影响;前台提供一些组件的操作方法,后台调用方法,并将执行情况写入到前台的组件中显示。

在SWT线程开发中,如果使用一个线程去访问另一个线程,则需要使用到Display对象的asyncExce方法,或者syncExce方法;

在关闭前台窗口时,需要将后台工作停止。由于是多线程,前台窗口关闭后,后台的程序还会在运行,并且回访问到前台的方法,这时,需要调用stop方法,使后台即使停止工作。

下边是一个示例:

前台运行类:

1:前台类中要有一个后台类成员,以便用this进行构造后台类;

2:前台类中要把后台需要访问的界面中的组件设为类的实例变量;

3:在前台类的main中实例化一个前台类对象,并调用open函数进行初始化;

4:前台类的open函数中对窗口进行基本的布局(创建按钮、标签、文本框等)并为组件添加事件监听;

5:可以把后台线程的创建放在事件监听中,也可以放在其外;

1 packagecn.com.sino.swt;2

3 importorg.eclipse.swt.SWT;4 importorg.eclipse.swt.events.SelectionAdapter;5 importorg.eclipse.swt.events.SelectionEvent;6 importorg.eclipse.swt.events.VerifyEvent;7 importorg.eclipse.swt.events.VerifyListener;8 importorg.eclipse.swt.layout.GridData;9 importorg.eclipse.swt.layout.GridLayout;10 importorg.eclipse.swt.widgets.Button;11 importorg.eclipse.swt.widgets.Display;12 importorg.eclipse.swt.widgets.Group;13 importorg.eclipse.swt.widgets.Label;14 importorg.eclipse.swt.widgets.ProgressBar;15 importorg.eclipse.swt.widgets.Shell;16 importorg.eclipse.swt.widgets.Text;17

18 public classGUITest01 {19 private Display display =Display.getDefault();20 private Shell shell = newShell();21 private GUITest task = new GUITest(this); //task为后台处理类22 //将界面组件设为类的实例变量

23 private Text taskText; //创建任务数文本框

24 private Button openButton; //创建“执行”按钮

25 private Button stopButton; //创建“停止”按钮

26 private ProgressBar progressBar; //创建进度条

27 private Text consoleText; //创建输出调试信息的文本框

28

29 public static void main(String[] args) { //main方法

30 try{31 GUITest01 window = new GUITest01(); //创建窗口

32 window.open(); //打开窗口

33 } catch(Exception e) {34 e.printStackTrace();35 }36 }37

38 public voidopen(){39 shell.setSize(330,330); //设置窗口大小

40 shell.setLayout(new GridLayout()); //设置窗口布局

41 shell.setText("SWT线程示例"); //设置窗口标题

42 Group group = new Group(shell, SWT.NONE); //设置任务数文本框和按钮的组

43 group.setLayoutData(newGridData(GridData.FILL_HORIZONTAL));44 group.setLayout(new GridLayout(4,false));45 new Label(group, SWT.NONE).setText("任务数:"); //设置任务数文本框

46 taskText = newText(group, SWT.BORDER);47 taskText.setText("20"); //默认任务数

48 taskText.setLayoutData(new GridData(100,-1));49 taskText.addVerifyListener(newVerifyListener() {50 public void verifyText(VerifyEvent e) { //只能输入数值

51 e.doit = "0123456789".indexOf(e.text) >=0;52 }53 });54 openButton = new Button(group, SWT.PUSH); //创建执行按钮

55 openButton.setText("执行");56 //对按钮添加事件监听

57 openButton.addSelectionListener(newSelectionAdapter() {58 public voidwidgetSelected(SelectionEvent e) {59 setButtonState(false); //设置两按钮的状态

60 String str = taskText.getText(); //得到任务数

61 final int taskCount = newInteger(str).intValue();62 progressBar.setMaximum(taskCount-1); //设置进度条的格数

63 consoleText.insert("后台处理线程开始启动......\n");64

65 new Thread(){ //为后台任务创建一个新的线程

66 public voidrun(){67 task.start(taskCount);68 }69 }.start();70

71 consoleText.insert("后台处理线程启动结束。\n");72 }73 });74

75 stopButton = new Button(group, SWT.PUSH); //创建停止按钮

76 stopButton.setText("停止");77 stopButton.setEnabled(false); //设置按钮是否可用78 //对按钮添加事件监听

79 stopButton.addSelectionListener(newSelectionAdapter() {80 public voidwidgetSelected(SelectionEvent e){81 task.stop(); //后台任务停止

82 }83 });84

85 progressBar = new ProgressBar(shell, SWT.NONE); //创建进度条

86 progressBar.setLayoutData(newGridData(GridData.FILL_HORIZONTAL));87 //输出调试信息的文本框

88 consoleText = new Text(shell, SWT.MULTI|SWT.BORDER|SWT.V_SCROLL);89 consoleText.setLayoutData(newGridData(GridData.FILL_BOTH));90 //------------------------------------------------------

91 shell.layout();92 shell.open();93 while(!shell.isDisposed()){94 if(!display.readAndDispatch()){95 display.sleep();96 }97 }98 display.dispose();99 }100 public void setButtonState(booleanbFlag){101 openButton.setEnabled(bFlag);102 stopButton.setEnabled(!bFlag);103 }104 //以下为后台类取界面组件的几个get方法

105 publicShell getShell(){106 returnshell;107 }108 publicText getConsoleText(){109 returnconsoleText;110 }111 publicProgressBar getProgressBar(){112 returnprogressBar;113 }114 }

后台运行类:

1:后台类中要有一个前台界面对象,在构造时获取;

2:在对前台操作的函数中需要调用syncExec,再调用界面类的函数(自定义,可以获取界面组件对象)对界面组件操作;

1 packagecn.com.sino.swt;2

3 importorg.eclipse.swt.widgets.Display;4

5 public classGUITest {6 private GUITest01 guitest;//前台界面对象

7 private boolean stopFlag;//是否停止的标识

8

9 /**

10 * 取得前台界面兑现11 *@paramtaskGUI12 */

13 publicGUITest(GUITest01 taskGUI){14 this.guitest =taskGUI;15 }16 /**

17 * 停止执行18 */

19 public voidstop(){20 stopFlag = true;21 }22 /**

23 * 开始执行24 *@paramtaskCount25 */

26 public void start(inttaskCount){27 stopFlag = false;//将执行状态初始化成执行

28 intsertConsoleText("------后台线程开始执行任务------\n");29 for (int i = 0; i < taskCount; i++) {30 if(stopFlag)//如果发现执行状态为停止,则退出次循环

31 break;32 try{33 Thread.sleep(500);//0.5秒一次循环

34 } catch(InterruptedException e) {35 e.printStackTrace();36 }37 intsertConsoleText("开始处理第"+(i+1)+"个任务...\n");//设置文本内容

38 try{39 Thread.sleep(500);//休眠0.5秒

40 } catch(InterruptedException e) {41 e.printStackTrace();42 }43 intsertConsoleText("任务"+(i+1)+"处理完毕\n");44 moveProgressBar(i);//设置进度条移动

45 }46 intsertConsoleText("------后台线程结束执行任务------\n");47 setTaskGUIButtonState(true);//刷新界面按钮状态

48 }49 /**

50 * 界面按钮状态51 *@parambFlag52 */

53 private void setTaskGUIButtonState(final booleanbFlag){54 Display.getDefault().asyncExec(newRunnable() {55 @Override56 public voidrun() {57 guitest.setButtonState(bFlag);58 }59 });60 }61 /**

62 * 显示进度条63 *@paramprogress64 */

65 private void moveProgressBar(final intprogress){66 Display.getDefault().syncExec(newRunnable() {67

68 @Override69 public voidrun() {70 guitest.getProgressBar().setSelection(progress);71

72 }73 });74 }75 /**

76 * 文本插入77 *@paramstr78 */

79 private void intsertConsoleText(finalString str) {80 Display.getDefault().syncExec(newRunnable() {81

82 @Override83 public voidrun() {84 guitest.getConsoleText().insert(str);85

86 }87 });88 }89 }

http://www.lbrq.cn/news/2800315.html

相关文章:

  • 秦皇岛做网站外包360浏览器网页版入口
  • 做ppt配图好用的网站高佣金app软件推广平台
  • bootstrap公司网站百度品牌
  • 三亚建设局网站河南seo技术教程
  • 怎么让自己做的网站让别人看到百度指数是怎么计算的
  • 头像网站模板baidu百度首页官网
  • 160;作者:网站建设&自己建站的网站
  • 专业做网站的人网络营销推广渠道有哪些
  • 导航网站 黄色托管竞价账户哪家好
  • 可视化网站开发系统介绍电子商务网络营销
  • 购物网站 后台近10天的时政新闻
  • 做外贸需要浏览外国网站商品促销活动策划方案
  • 湖南益阳网站建设网络营销主要有哪些特点
  • 购物网站模板 php如何进行搜索引擎优化?
  • 动漫设计需要学什么关键词优化排名要多少钱
  • 建设工程合同的内容北京专门做seo
  • 公司软件网站建设重庆网站推广
  • 自己买主机可以做网站吗seo是什么牌子
  • 上海做网站价格上海百度研发中心
  • html网站开发实验报告全网热度指数
  • 青岛免费网站建站模板最新热搜新闻事件
  • 企业网站seo营销最新域名8xgmvxyz
  • 做企业网站代码那种好google优化排名
  • bootstrap 案例网站宁波seo专员
  • 辽阳网站推广磁力狗在线
  • ip网站怎么做个人网页免费域名注册入口
  • 做集团网站的亚马逊查关键词搜索量的工具
  • 做网站泰州广州seo服务外包
  • 做网站的接口是意思自己怎么开发app软件
  • 答题助手网站怎么做的品牌推广活动策划案例
  • 2025-08-21 Python进阶2——数据结构
  • MFC随笔—不使用对话框资源模板创建对话框
  • 虚幻基础:曲线
  • mac的m3芯片安装JDK8、JDK17
  • 如何使用Prometheus + Grafana + Loki构建一个现代化的云原生监控系统
  • Temu美国站大规模扫号封店:虚假本土店遭批量封禁,如何规避?