首页> 搜索结果页
"java按钮绘制图形" 检索
共 63 条结果
Java图形与文本(18)
      实例018  旋转图形 实例说明 本实例演示在Java中绘制图形时,如何对图形进行旋转。运行程序,单击窗体上的“顺时针”按钮,可以将图形顺时针旋转,效果如图1.18所示,用户还可以通过单击“逆时针”和“还原”按钮,对窗体上的图形进行逆时针旋转和还原等操作。 关键技术   本实例主要是通过在JPanel类的子类中,重写JComponent类的paint()方法,并在该方法中使用Graphics2D类的rotate()方法来实现的。 使用Graphics2D类的rotate()方法,可以实现图形的旋转,该方法的定义如下: public abstract void rotate(double theta, double x, double y) 参数说明 ? theta:旋转的角度,以弧度为单位。 ? x:旋转原点的x坐标。 w y:旋转原点的y坐标。 设计过程 (1)新建一个项目。 (2)在项目中创建一个继承JFrame类的RotateShapeFrame窗体类。 (3)在RotateShapeFrame窗体类中,创建内部面板类RotateShapePanel,并重写JComponent类的paint()方法,在该方法中使用Graphics2D类的rotate()方法旋转图形。 (4)将内部面板类RotateShapePanel的实例,添加到窗体类RotateShapeFrame的内容面板上,用于在窗体上显示旋转后的图形,代码如下: class RotateShapePanel extends JPanel {  // 创建内部面板类     public void paint(Graphics g) {  // 重写paint()方法         Graphics2D g2 = (Graphics2D) g;  // 获得Graphics2D对象         Rectangle2D.Float rect = new Rectangle2D.Float(40, 40, 80, 50); // 创建矩形对象         BasicStroke stroke = new BasicStroke(10);  // 创建宽度是10的笔画对象         g2.setStroke(stroke); // 设置笔画对象         g2.clearRect(0, 0, 338, 220);   // 清除原有内容         if (flag == 0) {             g2.draw(rect); // 绘制原矩形         } else if (flag == 1) {             g2.rotate(rotateValue); // 顺时针旋转             g2.draw(rect); // 绘制矩形         } else if (flag == 2) {             g2.rotate(rotateValue); // 逆时针旋转             g2.draw(rect); // 绘制矩形         }     } } U 注意:上面代码中的flag是一个标记变量,当该变量的值为0时,图形还原到原来的位置;为1时,对图形进行顺时针旋转;为2时,对图形进行逆时针旋转。rotateValue是与需要旋转角度对应的弧度值。 秘笈心法 心法领悟018:角度转换为弧度。 由于使用Graphics2D类的rotate()方法旋转图形时,是按弧度进行旋转的,因此,当给定的旋转值是角度时,需要将其转换为弧度。在Java中,可以使用Math类的toRadians(double angdeg)方法,将参数指定的角度angdeg转换为近似相等的弧度值。
文章
Java
2014-12-05
java swing简介
java应用程序用户界面开发包 Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。 工具包中所有的包都是以swing作为名称,例如javax.swing,javax.swing.event 用Swing创建图形界面步骤: (1)导入Swing包 (2)选择界面风格 (3)设置顶层容器 (4)设置按钮和标签 (5)将组件放到容器上 (6)为组件增加边框 (7)处理事件 (8)辅助技术支持 1。导入Swing包 下面语句导入Swing包 import javax.swing.*; 大部分Swing程序用到了AWT的基础底层结构和事件模型,因此需要导入两个包: import java.awt.*; import java.awt.event.*; 如果图形界面中包括了事件处理,那么还需要导入事件处理包: import javax.swing.event.*; 2.选择界面风格 Swing允许选择程序的图形界面风格常用的有java风格,windows风格等 下面的代码用于选择图形界面风格,这里选择的是跨平台的Java界面风格。 try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName( )); } catch (Exception e) { } (3) 设置顶层容器 图形界面至少要有一个顶级Swing容器 顶级Swing容器为其它Swing组件在屏幕上的绘制和处理事件提供支持 常用的顶级容器: JFrame(框架):表示主程序窗口 JDialog(对话框):每个JDialog对象表示一个对话框,对话框属于二级窗口 JApplet(小程序):在浏览器内显示一个小程序界面 一个框架包括边界、菜单栏、工具栏、状态栏,以及中间占主要部分的窗格 窗格也可以看作是一种面板,但它是框架的一个组成部分 组件不会直接放到框架上,而是放在若干个面板上,这些面板再放到窗格上 用框架对象的getContentPane()函数来获得窗格,再调用窗格的add()函数放置面板 public static void main(String[ ]args){JFrame frame=new JFrame("SwingApplication"); JPanel panel1=new JPanel(); frame.getContentPane().add(panel1,BorderLayout.CENTER); ......//添加其他组件 frame.pack();frame.setVisible(true);}
文章
Java · 容器 · 小程序 · Windows
2014-09-17
jdk、jre、jvm的区别联系
 jdk包括以下三个东西: D:\Program Files\jdk1.7.0_21\bin\javac.exe和java.exe D:\Program Files\jdk1.7.0_21\jre  D:\Program Files\jdk1.7.0_21\jre\bin\client\jvm.dll Java类库概念:Java的应用程序接口以包的形式来组织,每个包提供了大量的相关类、接口和异常处理类,这些包的集合就是Java的类库。  包名以 Java 开始的包是 Java 核心包 (Java Core Package) ; 包名以 Javax 开始的包是 Java 扩展包 (Java Extension Package) ,例如 javax.swing 包; 常用的 Java 核心包 (Java Core Package) 1. java.lang Java 编程语言的基本类库,在使用 Java 时,除了 java.lang 外,其他的包都需要 import 语句引入之后才能使用。 java.applet 创建 applet 需要的所有类 java.awt 创建用户界面以及绘制和管理图形、图像的类 java.io 通过数据流、对象序列以及文件系统实现的系统输入、输出 java.NET 用于实现网络通讯应用的所有类 java.util 集合类、时间处理模式、日期时间工具等各类常用工具包 其它还有 java.sql 访问和处理来自于 Java 标准数据源数据的类 java.test 以一种独立于自然语言的方式处理文本、日期、数字和消息的类和接口 java.security 设计网络安全方案需要的一些类 java.beans 开发 Java Beans 需要的所有类 java.math 简明的整数算术以及十进制算术的基本函数 java.rmi 与远程方法调用相关的所有类 常用的 Java 扩展包 (Java Extension Package) javax.accessibility 定义了用户界面组件之间相互访问的一种机制 javax.naming.* 为命名服务提供了一系列类和接口 javax.swing.* 提供了一系列轻量级的用户界面组件,是目前 Java 用户界面常用的包 其中最重要的是java.lang和java.util。 java.lang 包 这个包称为 java 语言包,是由编译器自动引入的。程序中不必用 import 语句就可以使用。它所包含的类和接口对所有实际的 Java 程序都是必要的。 object 类 数学类 (Math) 数据类型类 线程类 字符串类 (String 类和 StringBuffer 类 ) 系统及运行类 (System 类和 Runtime 类 ) 错误和异常处理类 (Throwable 、 Exception 、 Error) 过程类 (process) java.util 包 日期类、日历类( Data 、 Calendar 、 GregorianCalendar ) 随机数类( Random ) 位运算类( BitSet ) 矢量类( Vector ) 数据结构类( Stack ) 散列表类( Hashtable ) StringTokenizer类 1.java.lang包 java.lang包 是Java中最常用的包,程序不需要注入,就可以使用该包中的类,利用包中的类可以设计最基本的Java程序。 2.java.awt包 java.awt包中的类提供了图形界面的创建方法,包括按钮、文本框、列表框、容器、字体、颜色和图形等元素的建立和设置。 3.javax.swing包 javax.swing包为Java编写的图形界面提供创建类,利用javax.swing包的类建立的界面元素可调整为各种操作系统的界面风格,支持各种操作平台的界面的开发。此外,swing包还提供了树形控件、标签页控件、表格控件的类。Java.swing包中的很多类都是从java.awt包的类继承而来,Java保留使用java.awt包是为了保持技术的兼容性,但应尽量地使用javax.swing包来开发程序界面。 4.java.io包 java.io包的类提供数据流方式的系统输入输出控制、文件和对象的读写串行化处理,比较常用的类包括:BufferInputStream、BufferOutputStream、BufferedReader、BufferedWriter、DataInputStream、DataOutputStream、FileInputStream和FileOutputStream等。 5.java.util包 java.util包提供时间日期、随机数以及列表、集合、哈希表和堆栈等创建复杂数据结构的类,比较常见的类有:Date、Timer、Random和LinkedList等。 6.java.NET包 java.Net包提供网络开发的支持,包括封装了Socket套接字功能的服务器Serversocket类、客户端Socket类以及访问互联网上的各种资源的URL类。 7.java.applet包 java.applet包只有一个Applet类,用于开发网页上的Applet小程序,使网页具有更强的交互能力以及多媒体、网络功能。 这七个包中的类库都是java编程语言中最基本最常用的,同学们一定要熟练掌握。这样才能在java编程语言学习中提高效率,事半功倍。  
文章
Java · 编译器 · 容器 · 自然语言处理 · 小程序 · 网络安全
2016-12-03
JavaGUI基本概念
Java中创建最简单的图形窗口就是使用JOptionPane类中的方法,属于javax.swing包。   一个图形用户界面(GUI)包含一个含有按钮,文本区域,其他屏幕显示组件的窗口框架           JOptionPane类是一个简单的GUI类,它可以被用来显示信息和提示用户进行输入,支持图形 输入和输出。           最常见的图形组件有按钮(JButton对象),文本域(JTextField对象),以及文本标签(JLable对象)。           Java中所有的图形组件拥有共同的继承结构,所以他们都含有一些可以对属性进行访问和设置 的共同的函数,比如背景颜色,大小,字体等。           组件被叫做布局管理器的对象放在框架或其他容器之中,比如BorderLayout,FlowLayout,   GridLayout 。可以通过把不同的布局管理器借助不同的容器进行嵌套已构成复合布局。           当用户与屏幕上显示的图片组件进行交互时,Java会产生一种叫做事件的特殊对象。为了   构建一个交互式GUI,必须对这些事件进行响应。           最常见的事件是ActionEvent,可以通过编写一个对MouseListenser接口进行了实现的类来 处理它。也可以通过编写一个对MouseInputAdapter类进行了扩展来实现对MouseEvent的      响应。           为了绘制图形和线条,我们需要编写一个对JPanel进行了扩展的类,并构建一个叫做 paintComponent的方法。           通过使用timer对象可以使GUI动起来,该对象每隔一段固定的时间就触发一个行为监听器的 事件。                   Frame 框架: 屏幕上的窗口               Component 组件:通常把像按钮或者文本输入域这些位于框架内部的图形部件成为组件                   由于Java中所有组件和框架有共同的继承结构,所以它们含有一些相同的属性。          Swing GUI就是一个很有力的由于继承而产生的代码共享的例子,因为其中每一个组件都含          有同一个父类的特征。                   布局管理器          一个用来决定组件在框架或屏幕上其他容器中的位置,大小以及改变大小的行为的 Java对象。                   处理动作事件:              当用户点击一个组件,在其上移动鼠标,或者以任何方式与其进行交互时,Java 的GUI系统都会建立一个特殊的事件event对象来表示这一行为。                   事件:          一个代表用户与GUI组件间交互的对象,可以通过在程序中创建交互式组件来处理。          如果不指定如何对某一事件做出反应,那么默认的操作是简单地忽略该事件。这样当用户点击一个按钮或者在文本域进行输入时,就不会触发任何操作。可以使用一种叫 做监听器listener的对象来完成对某一事件的响应。                   监听器:          一个负责执行某一事件的响应代码的对象,每次事件发生时,都会通知它进行所对应的 操作。          要处理一个事件,需要建立一个监听器对象并把它与相应的组件绑定,监听器对象中所含 事件发生时所执行的代码。                   Java事件处理的步骤:                  构建一个实现了ActionListener的类;                  将处理该事件的代码加到其中actionPerformed方法中;                  调用addActionListener方法来实现对该监听类的一个对象与所需组件进行绑定。                   复合式布局:          通过使用多种不同的布局管理器来使组件的布局方式更加合理化,同时会更加复杂。          布局管理器可以分层部署,并产生符合效果,这叫做复合式布局。                   在框架中使用panel面板容器,在panel面板上再使用布局··········          面板是屏幕显示所需要的一个组件,它本身通常是不可见的,而常常被用作其它组件的的容器。面板中含有控制其中组件布局方式的自己的布局管理器。 本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/839628,如需转载请自行联系原作者
文章
Java · 容器
2017-11-20
《交互式程序设计 第2版》一3.11 小结
本节书摘来华章计算机《交互式程序设计 第2版》一书中的第3章 ,第3.11节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。 3.11 小结 Processing既是一个集成开发环境,也是一门程序设计语言。它们是一体的,可以在processing.org/download上下载。Processing语言是基于Java语言的,但作了简化,以便帮助艺术家和设计师容易地建立可视化样本和交互式应用程序。Processing集成开发环境顶端的工具栏上有几个按钮。单击“Run”按钮可以运行程序;单击“Stop”按钮可以停止应用程序的运行;此外还有“New”、“Open”、“Save”、“Export Application”等按钮,分别可以新建、打开、保存、导出应用程序。也可以用菜单或快捷键来执行这些命令。单击“Run”按钮,Processing会编译并运行你的应用程序。一个Processing应用程序有两个基本方法:setup()方法是在程序一开始执行的时候就立即执行的;draw()方法会被定期地反复执行。想要设置draw()方法每秒被调用多少次,需要用frameRate()方法。Processing的绘图方法,如rect()、ellipse()和line()等,可以放到draw()或setup()方法的内部。background()方法会清除应用程序显示在窗口上的所有东西。绘图时,已经执行的fill()方法决定了图形内部的填充色。如果调用了noFill()方法,那么此后绘制的图形就没有填充,除非又调用了fill()方法。Processing定义了mouseX变量和mouseY变量来存储鼠标当前位置,还定义了key变量和keyPressed()方法来帮你捕获用户的键盘输入。你可以将一些库导入进Processing中,方法是下载库文件,并将其放到Processing项目目录的libraries文件夹中,然后重新启动Processing。接下来你就可以导入并使用这些库了,导入需要用import语句,如下所示: import ddf.minim.*; // 使用Minim库,只是一个例子 使用PImage对象和loadImage()方法可以将图像载入Processing应用程序中,并且可以显示、处理图像。使用Movie类可以将QuickTime视频载入到Processing应用程序中,并且可以显示视频、访问像素级数据。使用saveStrings()方法可以将字符串数组中的所有数据保存到文本文件中。使用loadStrings()方法可以将文本文件中的数据读进字符串数组中。调试应用程序时,print()方法很有用,因为在变量值被改变的关键地方,可以使用这个方法将变量的值输出来。Processing集成开发环境会将错误消息输出到窗口下方的控制台中。在分析错误原因时,这些消息很有用。用print()和println()方法故意输出的消息也显示在控制台窗口中。你可以将Processing应用程序导出为独立的可执行程序:面向Windows的程序是以.exe为扩展名;面向Mac OS X的以.app为扩展名。你也可以将其导出为面向Web的Java applet程序。
文章
Java
2017-07-03
《交互式程序设计 第2版》一3.11 小结
本节书摘来华章计算机《交互式程序设计 第2版》一书中的第3章 ,第3.11节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。 3.11 小结 Processing既是一个集成开发环境,也是一门程序设计语言。它们是一体的,可以在processing.org/download上下载。Processing语言是基于Java语言的,但作了简化,以便帮助艺术家和设计师容易地建立可视化样本和交互式应用程序。Processing集成开发环境顶端的工具栏上有几个按钮。单击“Run”按钮可以运行程序;单击“Stop”按钮可以停止应用程序的运行;此外还有“New”、“Open”、“Save”、“Export Application”等按钮,分别可以新建、打开、保存、导出应用程序。也可以用菜单或快捷键来执行这些命令。单击“Run”按钮,Processing会编译并运行你的应用程序。一个Processing应用程序有两个基本方法:setup()方法是在程序一开始执行的时候就立即执行的;draw()方法会被定期地反复执行。想要设置draw()方法每秒被调用多少次,需要用frameRate()方法。Processing的绘图方法,如rect()、ellipse()和line()等,可以放到draw()或setup()方法的内部。background()方法会清除应用程序显示在窗口上的所有东西。绘图时,已经执行的fill()方法决定了图形内部的填充色。如果调用了noFill()方法,那么此后绘制的图形就没有填充,除非又调用了fill()方法。Processing定义了mouseX变量和mouseY变量来存储鼠标当前位置,还定义了key变量和keyPressed()方法来帮你捕获用户的键盘输入。你可以将一些库导入进Processing中,方法是下载库文件,并将其放到Processing项目目录的libraries文件夹中,然后重新启动Processing。接下来你就可以导入并使用这些库了,导入需要用import语句,如下所示:import ddf.minim.*; // 使用Minim库,只是一个例子使用PImage对象和loadImage()方法可以将图像载入Processing应用程序中,并且可以显示、处理图像。使用Movie类可以将QuickTime视频载入到Processing应用程序中,并且可以显示视频、访问像素级数据。使用saveStrings()方法可以将字符串数组中的所有数据保存到文本文件中。使用loadStrings()方法可以将文本文件中的数据读进字符串数组中。调试应用程序时,print()方法很有用,因为在变量值被改变的关键地方,可以使用这个方法将变量的值输出来。Processing集成开发环境会将错误消息输出到窗口下方的控制台中。在分析错误原因时,这些消息很有用。用print()和println()方法故意输出的消息也显示在控制台窗口中。你可以将Processing应用程序导出为独立的可执行程序:面向Windows的程序是以.exe为扩展名;面向Mac OS X的以.app为扩展名。你也可以将其导出为面向Web的Java applet程序。
文章
Java
2017-07-03
《Android应用开发攻略》——1.10 引用程序库实现外部功能
1.10 引用程序库实现外部功能 Rachee Singh1.10.1 问题你需要在源代码中引用外部程序库。1.10.2 解决方案获取你所需要的程序库JAR文件,并将其添加到你的项目中。1.10.3 讨论举一个例子,你可能需要在应用程序中使用AndroidPlot(一个用于绘制图表和图形的程序库)或者OpenStreetMap(创建和提供免费地理数据和地图的wiki项目)。这样,应用程序就必须引用这些程序库。可以在Eclipse中以几个简单的步骤完成这一工作:1 . 下载你希望使用的程序库对应的JAR文件。2 . 在Eclipse中创建Android项目后,右击项目名称并选择菜单中的Properties(属性),如图1-18所示。3 . 从左侧的列表中选择Java Build Path(Java构建路径)并单击Libraries(程序库)选项卡。4 . 单击Add External JARs(添加外部JAR)按钮。5 . 提供下载的程序库JAR文件的位置。 这时,你将会在项目中看到Referenced Libraries目录。你所添加的JAR将会出现(见图1-19)。替代方法之一是在项目中创建lib文件夹,将JAR文件复制到该文件夹中,然后单击Add JARs按钮,像前面一样单独添加这些文件。这种方法将所有文件放在同一个位置(特别是在你的项目通过版本控制系统与其他人共享,而这些人使用不同操作系统并且无法在同一位置找到外部JAR的情况下)。但是,这会带来所包含的JAR文件许可问题的负担,参见图1-20。 在任何情况下,如果你还使用Ant构建程序,一定要更新build.xml文件。不管采用哪一种方法,在项目中添加程序库都相当简单。
文章
Java · Android开发
2017-08-01
《Java编程思想》读书笔记(1)
14章开篇的一句话:设计的宗旨是"能轻松完成简单的任务,有办法完成复杂的任务"。一句发人深省的话。恩,怎么理解哪,我是这样认为的:软件应该能够满足用户的真实需求,为用户完成业务提供足够的支持和帮助,并且这种支持对用户来说,应当是:易于理解,易于使用,高效而便捷的。用户面对的实际业务是多样性的,对于简单的业务的支持是软件所必需的,而能够为用户完成各种复杂的业务需求提供强大的支持能力则是软件能够出色的根本。这让我想起了现下的许多软件,其开发者不把心思放在对用户的实际需求的分析和获取上,而只是花心思去设计花哨的界面,结果当然只是一个个失败的项目了。简单的一句话,却道出了软件的根本-----软件是用来干什么的?可我们在实际中却往往忽视了其核心---用户的需求。试想,如果你连用户的实际需求都没把握住,那么你设计出来的软件 “能轻松完成简单的任务,有办法完成复杂的任务”吗?那么这样的软件就算外观再漂亮,又有何用处?需求才是王道!!!   Java1.0开发的AWT(Abstract Window Toolkit)可以说是一个失败的GUI类库,用它开发出来的界面,在各个平台上看上去都很平庸,并且它的功能也非常有限;只能用四种字体,不能访问操作系统所提供的更复杂的GUI元素,更让人惊奇的是,居然它使用的是非面向对象的编程模式。我想也许是为了快速吸引用户,sun在没有进行充分的设计的情况下就推出了这个GUI类库,哎,在市场的面前,技术也不得不低下它高昂的头颅吧。   在接下来的java1.1中,AWT有了一些进步,采用了面向对象的解决方案,更吸引人的是,它引入了javaBean. javaBean是一种为可视编程环境服务的(visual programming environment)组件编程模式(当然也有非可视的javaBean,象在j2ee中使用的)。但1。1还是没有能让人满意,最终java2中用java Foundation Classes (JFC)全面替换了Java 1.0 AWT。JFC的GUI部分被称为"Swing“。这是一组易学易用的,能拖放的(当然也可以手写代码)的JavaBean,用它创建的GUI还是能令人满意的。而现在,随着Eclipse的发展与壮大,人们又重新审视AWT和Swing的优缺点,提出了SWT。不过不论怎样,每种技术都有其存在的合理性,并不能武断地说哪个类库更好,但目前看来SWT应该是发展的大趋势。   就我个人的理解,AWT处理用户界面元素的方式是把要建立的元素指派给目标运行平台上自带的GUI工具包,就比如说,在一个窗口中放一个文本框,实际上是由一个隐藏的底层文本框来进行文本处理的。这样开发出来的应用程序就可以运行在各个平台上,这也是Sun公司引以为豪的“Write once,run everywhere‘。这种思路对于简单的应用程序是十分有效的,但想用它来编写依赖于各个平台自带的GUI工具,却有高度的可移植性的GUI应用程序是比较困难的。因为用户界面元素在各个不同平台上表现出来的外观和行为可能会有一些不同之处,这样就会给用户带来不一致的用户体验,再者,考虑到各个平台的差异性以及可移植性的需要,就不得不对基于本地平台的对等实体的可移植库进行限制。除次以外,不同平台上的AWT库中有各种不同的bug,这就出现了一句名言来形容java---“write once,debug everywhere);   而它的后继者Swing的产生历史是这样的:1996年、网景创建了个称之为IFC(Internet Foundation C1asses)的GUI类,它采用了—个与AWT截然不同的方法。按钮、菜单等等诸如此类的用户界面元素都被绘入空白窗口。也就是说用户界面元素是通过纯java代码绘制出来的,而不是采用本地平台上的对等实体来进行处理。当然,完整的JFC并不仅仅只有一个Swing GUI工具包,它还包括一个访问API,一个2D API,一个拖放API.Swing并没有替代AWt,而只是为我们提供了功能更加强大的用户界面组件。它使用的还是1.1 的事件处理模式。也由于Swing是自己绘制用户界面元素,因此效率肯定要比AWT低一些,但对于现在的机器来说,这点是可以不予考虑的,而且,也是考虑到效率的原因,因此Swing是轻量级的组件。相反,Swing的优点让人无法抗拒的:1)它提供了更加丰富,方便的用户界面元素。2)它通过自己绘制用户界面元素,不依赖于本地平台,因此减少了与平台有关的错误,这些错误在平台移植时经常出现,为了实现跨平台移植,Swing全部是采用java写的。3)自己绘制的用户界面元素给用户一致的用户体验。但这一点也带来了一个缺点,使得用户界面元素可能和本地平台上自带的控件不一致,使用户迷惑。Swing还提供一种更前卫的,被称为"pluggable look and feel(可插接式外观)"的功能,也就是说用户界面的外观可以根据操作系统或用户的习惯动态地改变。你甚至可以自己发明一套外观(当然是很难的)。而sun公司为了解决这个毛病,开发了一个与平台无关的外观“Metal”。       总而言之,Swing和AWT比起来,更加的健壮,可移植性更好,更易于使用(这不就是用户所想要的吗?呵呵)。至于现在兴起的SWT,由于对其了解还不多,在此就不多罗嗦了。而书中提到的,"GUI builders" (可视化编程环境)只是一个"社交"的层面。当你用图形工具把组件放到窗体上的时候,实际上是GUI builder在调用JavaBeans和Swing为你编写代码。这一点应该就是IDE 的实现方式吧,那是不是说:我在设计器里拖Button这样的可视化组件,IDE就通过调用一些相关的非可视化组件来产生代码的呢?很好奇,有机会去看看开源IDE的实现方式。。。。 本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2006/05/25/409135.html,如需转载请自行联系原作者
文章
数据可视化 · IDE · Java · 开发工具 · UED · API · 开发框架 · 开发者 · Android开发
2017-12-27
Processing编程学习指南2.5 Processing中的代码
2.5 Processing中的代码 是时候用第1章中学习的知识来编写一些代码了。首先,复习一些基本的句法规则(syntax rule)。你可以编写三种类型的陈述语句: 函数调用 赋值操作 结构控制 目前为止,每一行代码都是对一个函数的调用,如图2-3所示。剩下的两种类型我会在后面的章节里讨论。每个函数都有一个名称,后面紧跟着圆括号,圆括号内是一组实参。回想下第1章,我曾用函数展示如何绘制图形(当时我称之为“命令”或者“指令”)。如果把调用函数比作一个自然语言的句子的话,函数名称就是句子的动词(“绘制”),而实参就是句子的宾语(“点0,0”)。注意每个调用的函数最后一定要以分号结束,如图2-4所示。 事实上,你已经学过好几个函数了,包括background()、stroke()、fill()、noFill()、noStroke()、point()、line()、rect()、ellipse()、rectMode(),以及ellipseMode()。如果草图中有多个函数,Processing会按照顺序依次执行函数,并将结果显示在窗口中。说到窗口,我突然意识到在第1章中我忘记了提及非常重要的一个函数—size()。size()函数可以用来设定草图窗口的大小,包括两个实参:宽度值和高度值。如果你想实现草图sketch全屏,你可以调用fullScreen()函数来替代size()函数。使用fullScreen()函数时,草图的尺寸大小和电脑显示器的分辨率是对应的。size()函数和fullScreen()函数永远都是setup()中的第一行代码,而且在任何草图中,只能使用其中一个函数。   下面是fullScreen()函数。   我们来看一个例子(见图2-4)。   图 2-4 下面还有几个需要特别注意的事项。 Processing的文本编辑器会将已知字符(有时是指保留字符(reserved word)或者关键字(keyword))用彩色来表示。这些字符通常是Processing库中可用的绘图函数、内置变量(第3章我会着重讲到变量这个概念)和常量,以及从Java编程语言中继承过来的某些特定字符。 有时,如果想要了解程序运行的状态,或者监测特定的变量数值,这时可以使用println()函数显示程序的运行信息,它位于Processing的最底端。println()函数可以自带一个或多个实参,将信息在控制台输出。如图2-4所示,在这个示例中,我将“Take me to your leader!”这个字符串用引号括起来并输出(更多关于文本的介绍前往第17章)。在调试变量的数值时,这种将信息显示到控制台的功能非常好用,也非常方便。针对排除故障也有一个特殊的按钮,它是界面顶端右侧的小昆虫形状的按钮,在第11章将会详细讨论。 左下角的数字代表了哪一行的代码被选中。同样在代码左侧可以查看该代码行的编号。 你可以在代码中写下一些注释。注释是给我们看的,因此对计算机并不起作用。通过书写注释,可以方便用户日后回顾,也有助于别人理解你写的代码,以及之后对代码进行修改等等。使用注释功能的具体方法如下:输入“//”符号,“//”后面的内容都会被Processing认定为注释内容。而对于多行注释,要使用“/*”符号作为开始,“*/”符号作为结束。 Processing初始默认模式为Java模式。它是Processing的核心,在Processing中,就是用java语言来编写代码的。Processing还提供了其他模式,这里特别要强调的是Python模式,它允许你使用Python编程语言来编写代码。你可以通过点击右上角的模式按钮尝试其他模式,如图2-4所示。   关于注释,一言以蔽之:从现在开始要养成在代码中书写注释的好习惯。尽管刚开始草图代码会非常短非常简单,但是你依然要尽量使用注释。没有注释的代码非常难以阅读和理解。当然没必要每一行代码都写注释,但事实上注释越多,往后你回顾和再使用这些代码花费的时间就会越短。同时书写注释有助于你去思考并理解代码是如何工作的。如果对自己正在进行的工作尚且无法清晰地理解,又怎么能够对正在编写的代码进行注释呢? 本书并不会一直书写注释,因为许多代码并不像在实际的程序那样非常难以阅读。相反,本书会经常使用一些“提示”作为额外的解释,这样能让你举一反三。如果你去网站看本书的示例,那么那些代码通常都是有注释的。总之,在此我要再次强调:养成书写注释的习惯!   练习2-4:创建一个空白草图,从第1章后面的内容中找一些代码,输入到Processing中。为这些代码增加注释来说明这些代码的作用。使用pintln()命令,在Processing消息区中显示信息,保存草图文件,点击运行按钮。看下文件会正常运行还是会出现错误提示。  
文章
Java
2017-05-02
Processing编程学习指南2.1 让Processing来拯救你
摘要 Processing 未来计算机的重量也许不超过1.5吨。 —美国《大众机械学》(Popular Mechanics)杂志,1949 带我去见你的首领。 —Zoog,2008 本章主要内容: 下载和安装Processing Processing界面 Processing速写本 编写代码 错误 Processing 参考文档 运行按钮 你的第一个草图 2.1 让Processing来拯救你 既然你已经掌握了图形以及RGB颜色的基本知识,现在是时候将学到的知识运用到编程中了。幸运的是,你将使用的编程环境是Processing,它是一个自由开源的软件,由麻省理工学院媒体实验室的Ben Fry和Casey Reas在2001年开发的(更多关于Processing的发展历程请看本书的前言部分)。 Processing中关于图形绘制的核心函数库会提供即时的信息反馈和线索,让你明确代码的功能。由于它的编程语言采用和其他编程语言相同的逻辑、结构和概念(尤其是和Java语言相比),所以你学到的关于Processing的所有编程内容就是真正的编程。也就是说,它并不是一种让你快速掌握的虚拟代码;它和其他编程语言具有相同的基本原理和核心概念。 阅读完本书,并开始进行编程之后,你可能会在学术或专业生涯中继续使用Processing作为原型开发或者生产工具;也有可能将Processing中掌握的编程知识运用到其他语言,触类旁通;也有可能,你发现编程根本不是你的专长。不管怎样,本书中Processing的基础编程知识都将有助于你和其他设计师以及程序员进行合作。 虽然你可能觉得没有必要,但我想再次强调下选择学习Processing的优势。毕竟,本书的主要目标是在计算机图形学和设计学的背景下讲授计算机编程的基础知识。花点时间认真考虑选择什么样的编程语言作为一本书、一门课、一项家庭作业、一个网络应用、一个软件套装的开发工具是非常有必要的。既然你已经决定以一名计算机程序员的身份开始编程,那么有个问题将会一而再、再而三的被提及:我需要通过编程从而完成一个关于    的项目;我应该使用什么编程语言? 对于我来说,这个问题并没有标准答案。任何一门能让你产生兴趣去尝试的都是很棒的编程语言。但是对于初学者来说,Processing绝对是不二之选。它的简洁性尤其适合初学者。在本章的末尾,你就可以开始运行编写的程序,并学习编程的基础概念了。但是Processing的优点并不仅仅在于简洁。建议你看一下Processing在线作品(http://processing.org/exhibition),这些完全用Processing设计的作品将会向你全面展示Processing强大的功能和创造性。阅读完本书,掌握了所有的知识后,你完全能够将自己的想法变为现实。Processing是你学习和创作的好帮手;其他语言和开发环境事实上很难同时做到以上几点。
文章
程序员
2017-05-02
跳转至:
华章出版社
320 人关注 | 1 讨论 | 10149 内容
+ 订阅
  • 带你读《Java并发编程的艺术》之一:并发编程的挑战
查看更多 >
开发与运维
3704 人关注 | 91521 讨论 | 88175 内容
+ 订阅
  • 开放下载!《Apache RocketMQ 从入门到实战》
  • 基于istio的流量镜像构建真实流量的staging环境
  • 鬼才|闲鱼PMO的年终总结
查看更多 >
云原生
58630 人关注 | 4619 讨论 | 11817 内容
+ 订阅
  • Serverless 极致弹性解构在线游戏行业痛点
  • 从no-code到low-code:企业级hpaPaaS的未来
  • 快手基于 Flink 的持续优化与实践
查看更多 >
大数据
2102 人关注 | 13736 讨论 | 28607 内容
+ 订阅
  • 基于istio的流量镜像构建真实流量的staging环境
  • 从no-code到low-code:企业级hpaPaaS的未来
  • MaxCompute在电商场景中如何进行漏斗模型分析
查看更多 >
人工智能
1968 人关注 | 7207 讨论 | 33427 内容
+ 订阅
  • 平台建设的7大问题:蚂蚁AI平台实践深度总结
  • 基于istio的流量镜像构建真实流量的staging环境
  • Serverless 极致弹性解构在线游戏行业痛点
查看更多 >