本文主要向大家介绍了JAVA从入门到精通的SWT(JFace)体验之ApplicationWindow,通过具体的代码向大家展示,希望对大家学习JAVA从入门到精通有所帮助。

测试代码如下:

复制代码代码如下:package swt_jface.demo;

import org.eclipse.jface.window.ApplicationWindow;

import org.eclipse.swt.SWT;

import org.eclipse.swt.events.ModifyEvent;

import org.eclipse.swt.events.ModifyListener;

import org.eclipse.swt.layout.GridLayout;

import org.eclipse.swt.widgets.Composite;

import org.eclipse.swt.widgets.Control;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Label;

import org.eclipse.swt.widgets.Text;

public class TemperatureConverterJFace extends ApplicationWindow {

Label fahrenheitLabel;

Label celsiusLabel;

Text fahrenheitValue;

Text celsiusValue;

public TemperatureConverterJFace() {

super(null);

addStatusLine();

}

protected Control createContents(Composite parent) {

getShell().setText("JFace Temperature Converter");

Composite converterComposite = new Composite(parent, SWT.NULL);

converterComposite.setLayout(new GridLayout(4, false));

fahrenheitLabel = new Label(converterComposite, SWT.NULL);

fahrenheitLabel.setText("Fahrenheit: ");

fahrenheitValue = new Text(converterComposite, SWT.SINGLE | SWT.BORDER);

celsiusLabel = new Label(converterComposite, SWT.NULL);

celsiusLabel.setText("Celsius: ");

celsiusValue = new Text(converterComposite, SWT.SINGLE | SWT.BORDER);

ModifyListener listener = new ModifyListener() {

public void modifyText(ModifyEvent e) {

valueChanged((Text) e.widget);

}

};

fahrenheitValue.addModifyListener(listener);

celsiusValue.addModifyListener(listener);

return converterComposite;

}

public void valueChanged(Text text) {

if (!text.isFocusControl())

return;

if (text == fahrenheitValue) {

try {

double fValue = Double.parseDouble(text.getText());

double cValue = (fValue - 32) / 1.8;

celsiusValue.setText(Double.toString(cValue));

System.out.println("F -> C: " + cValue);

setStatus("Conversion performed successfully.");

} catch (NumberFormatException e) {

celsiusValue.setText("");

setStatus("Invalid number format: " + text.getText());

}

} else {

try {

double cValue = Double.parseDouble(text.getText());

double fValue = cValue * 1.8 + 32;

fahrenheitValue.setText(Double.toString(fValue));

System.out.println("C -> F: " + fValue);

setStatus("Conversion performed successfully.");

} catch (NumberFormatException e) {

fahrenheitValue.setText("");

setStatus("Invalid number format: " + text.getText());

}

}

}

public static void main(String[] args) {

TemperatureConverterJFace converter = new TemperatureConverterJFace();

converter.setBlockOnOpen(true);

converter.open();

Display.getCurrent().dispose();

}

}

不使用ApplicationWindow(即只是用SWT类)的解决方案:

复制代码代码如下:package swt_jface.demo;

import org.eclipse.swt.SWT;

import org.eclipse.swt.events.ModifyEvent;

import org.eclipse.swt.events.ModifyListener;

import org.eclipse.swt.layout.GridData;

import org.eclipse.swt.layout.GridLayout;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Label;

import org.eclipse.swt.widgets.Shell;

import org.eclipse.swt.widgets.Text;

public class TemperatureConverter {

Display display = new Display();

Shell shell = new Shell(display);

Label fahrenheitLabel;

Label celsiusLabel;

Label messageLabel;

Text fahrenheitValue;

Text celsiusValue;

public TemperatureConverter() {

shell.setText("SWT Temperature Converter");

shell.setLayout(new GridLayout(4, false));

fahrenheitLabel = new Label(shell, SWT.NULL);

fahrenheitLabel.setText("Fahrenheit: ");

fahrenheitValue = new Text(shell, SWT.SINGLE | SWT.BORDER);

celsiusLabel = new Label(shell, SWT.NULL);

celsiusLabel.setText("Celsius: ");

celsiusValue = new Text(shell, SWT.SINGLE | SWT.BORDER);

messageLabel = new Label(shell, SWT.BORDER);

GridData gridData = new GridData(GridData.FILL_BOTH);

gridData.horizontalSpan = 4;

messageLabel.setLayoutData(gridData);

ModifyListener listener = new ModifyListener() {

public void modifyText(ModifyEvent e) {

valueChanged((Text) e.widget);

}

};

fahrenheitValue.addModifyListener(listener);

celsiusValue.addModifyListener(listener);

shell.pack();

shell.open();

while (!shell.isDisposed()) {

if (!display.readAndDispatch()) {

display.sleep();

}

}

display.dispose();

}

public void valueChanged(Text text) {

if (!text.isFocusControl())

return;

if (text == fahrenheitValue) {

try {

double fValue = Double.parseDouble(text.getText());

double cValue = (fValue - 32) / 1.8;

celsiusValue.setText(Double.toString(cValue));

System.out.println("F -> C: " + cValue);

messageLabel.setText("Conversion performed successfully.");

} catch (NumberFormatException e) {

celsiusValue.setText("");

messageLabel.setText("Invalid number format: " + text.getText());

}

} else {

try {

double cValue = Double.parseDouble(text.getText());

double fValue = cValue * 1.8 + 32;

fahrenheitValue.setText(Double.toString(fValue));

System.out.println("C -> F: " + fValue);

messageLabel.setText("Conversion performed successfully.");

} catch (NumberFormatException e) {

fahrenheitValue.setText("");

messageLabel.setText("Invalid number format: " + text.getText());

}

}

}

public static void main(String[] args) {

new TemperatureConverter();

}

}

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

java swt_JAVA从入门到精通:SWT(JFace)体验之ApplicationWindow相关推荐

  1. 《Java 开发从入门到精通》—— 2.2 编写第一段Java程序

    本节书摘来异步社区<Java 开发从入门到精通>一书中的第2章,第2.2节,作者: 扶松柏 , 陈小玉,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.2 编 ...

  2. Java学习从入门到精通的学习建议

    想要学好java技术,首先打好基础很重要,不论学什么基础都是重中之重,学习Java更是如此.如:基础语法.核心类库.面向对象编程.异常.集合.IO流等基础如果学不好,那么后边更深入的语法也不容易学会. ...

  3. Java学习从入门到精通-旧版

    为什么80%的码农都做不了架构师?>>>    Java学习从入门到精通-旧版 http://tech.ccidnet.com/art/3737/20051017/465333_1. ...

  4. Java学习从入门到精通

    Java Learning Path (一).工具篇 一. JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envi ...

  5. Java学习从入门到精通[转]

    Java Learning Path (一).工具篇   一. JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime En ...

  6. 真正的Java学习从入门到精通

    一. 工具篇JDK (Java Development Kit) oF[l�bZk0   `WR4j-   JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirn ...

  7. 令我欣慰的读者反馈《大话Java程序设计从入门到精通》

    自从<大话Java程序设计从入门到精通>于2018年底出版后,我很期待这本书能实现我的心愿:尝试用讲故事的写作风格,帮助读者轻松掌握Java编程技巧,在生动有趣的西游记神话故事范例中领悟面 ...

  8. Java视频教程从入门到精通(2023完整版)

    java视频教程从入门到精通(2023完整版),Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个 ...

  9. 《Java Web从入门到精通》PDF 百度网盘

    http://www.java1234.com/a/javabook/javaweb/2014/1219/3407.html <Java Web从入门到精通>PDF 下载 <Java ...

最新文章

  1. 第十五届全国大学生智能汽车竞赛华东区赛程
  2. 深入理解编译注解(四)常用接口介绍
  3. Linux中close的用法,linux下 open() write() read() close函数
  4. hp代码改成linux代码,HP Database Archiving Software远程任意代码执行漏洞
  5. JAVA进阶day04多态(向上转化,向下转化)
  6. 百度经验 回享计划
  7. lucene全文检索的概念
  8. IT人才需要怎样的沟通表达能力
  9. centos ifconfig 无法使用问题
  10. java中struts2框架,概述Java的struts2框架
  11. 360极速浏览器兼容模式怎么设置在哪
  12. cadence allegro - 四层板设置 ……F
  13. 项目源代码迁移到另一个gitlab的方法(保留原来的提交记录)
  14. 苹果开发者账号注册流程
  15. java操作跨页的word cell_Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行...
  16. Ubuntu查找软件命令
  17. lt;=gt;与lt;gt;的区别
  18. 认知天性——读书笔记
  19. 中科院自动化研究所彭思龙:科学家创业的“七宗罪”
  20. SM3算法预处理和非预处理的调用(0018规范接口)

热门文章

  1. 645仪表以JSON格式上发方法
  2. 基于Simulink的单相变压器运行特性分析
  3. 达观财务报表解析与核查系统助力金融企业财报管理变革
  4. SqlServer怎么查询两个日期中的所有年份与月份
  5. 第10章 入侵检测技术原理与应用
  6. 最佳深度学习书5本推荐给你
  7. 安装ug第一步java打不开,UG8.0安装后打不开怎么办-UG8.0安装后打不开的解决办法...
  8. Python课程设计之学生信息管理系统
  9. 啪的一下就进来了,很快哦
  10. 当年那开发熊猫烧香病毒的人现在怎么样了?