Groovy在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
lis危急值上报 发布于:2024-04-22 11:16 收货需求日期 发布于:2024-04-03 18:44 成品宽表(分项目) 测试 发布于:2024-03-21 09:45 def result = [ msgCode: '' ] return result 发布于:2024-02-19 14:41 筛选存在和不存在的对象 发布于:2024-01-18 16:29 计算金蝶鉴权 发布于:2024-01-17 20:37 骨密度结果回传 发布于:2024-01-12 10:56 骨密度获取信息返回 发布于:2024-01-11 15:02 骨密度获取信息入参 发布于:2024-01-11 09:43 自动提交定金学费 发布于:2023-12-25 10:44 多条【定金/学费】合并为一条【协议收款】 发布于:2023-12-22 14:38 顾问业绩学费更新顾问业绩 发布于:2023-12-22 14:37 编辑学费更新收款的顾问业绩拆分 发布于:2023-12-22 14:36 学费编辑器效验 发布于:2023-12-22 13:35 自动生成排课明细 发布于:2023-12-12 09:13 根据排课日期生成日程 发布于:2023-12-11 10:17 排课排课效验 发布于:2023-12-11 09:13 排课排课效验 发布于:2023-12-08 15:15 线索线索分发 发布于:2023-12-07 15:32 获取钉钉花名册数据 发布于:2023-11-23 11:53 日期函数转换 发布于:2023-11-22 11:37 济南肺功能回写出参 发布于:2023-10-14 17:54 肺功能结果回传入参 发布于:2023-10-14 17:54 济南肺功能申请单出参 发布于:2023-10-14 17:18 济南肺功能获取申请单入参 发布于:2023-10-13 17:41 济南身高体重仪结果回写出餐 发布于:2023-10-09 14:48 身高体重仪结果回传入参 发布于:2023-10-09 15:34 身高体重仪信息查询返回 发布于:2024-01-11 14:32 济南获取身高体重信息 发布于:2023-10-20 15:49 新his查档返回 发布于:2023-09-11 17:20 老HIS取消计费出参 发布于:2023-09-04 19:28 老HIS取消计费入参 发布于:2023-09-04 19:28 老HIS计费返回 发布于:2023-09-04 19:28 杭州老HIS结算入参 发布于:2023-08-31 14:32 统一接口出参微脉 发布于:2023-08-25 15:00 新his查档 发布于:2023-10-17 16:40 统一接口入参微脉 发布于:2023-08-25 15:00 老his团检计费 发布于:2023-07-04 17:59 老his发票查询档案 发布于:2023-07-06 17:29 分组list,分批list 发布于:2023-06-12 12:42 老HIS发票 发布于:2023-07-06 17:30 麦迪克斯返参 发布于:2023-06-08 14:26 麦迪克斯申请单入参 发布于:2023-06-08 14:22 groovy测试 发布于:2023-06-06 10:57 老HIS新计费 发布于:2023-05-31 22:00 uf3.0生成oracle数据库用户名 发布于:2023-05-29 11:43 人体成份结果回传返回 发布于:2023-05-23 20:01 人体成份结果回传入参 发布于:2023-05-23 17:36 人体成份出参 发布于:2023-05-22 11:51 人体成份入参 发布于:2023-10-08 17:50 [更多]
显示目录

构建器



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

构建器

在软件开发过程中,有时开发人员花费大量时间来创建数据结构,域类,XML,GUI布局,输出流等。有时用于创建这些特定需求的代码导致在许多地方重复相同的代码片段。这是Groovy的建设者发挥作用。Groovy有可以用来创建标准对象和结构的构建器。这些构建器节省了时间,因为开发人员不需要编写自己的代码来创建这些构建器。在本章的教程中,我们将看看groovy中可用的不同构建器。

Swing 构建器

在groovy中,还可以使用groovy中提供的swing构建器创建图形用户界面。开发swing组件的主要类是SwingBuilder类。这个类有许多方法创建图形组件,如 -

  • JFrame - 这是用于创建框架元素。

  • JTextField - 这用于创建textfield组件。

让我们看一个简单的例子,如何使用SwingBuilder类创建一个Swing应用程序。在以下示例中,您可以看到以下几点 -

  • 您需要导入groovy.swing.SwingBuilder和javax.swing.*类。

  • 在Swing应用程序中显示的所有组件都是SwingBuilder类的一部分。

  • 对于框架本身,您可以指定框架的初始位置和大小。您还可以指定框架的标题。

  • 您需要将Visibility属性设置为true才能显示框架。

import groovy.swing.SwingBuilder 
import javax.swing.* 

// Create a builder 
def myapp = new SwingBuilder()

// Compose the builder 
def myframe = myapp.frame(title : 'Tutorials Point', location : [200, 200], 
   size : [400, 300], defaultCloseOperation : WindowConstants.EXIT_ON_CLOSE {         
      label(text : 'Hello world')
   } 

// The following  statement is used for displaying the form 
frame.setVisible(true)

上述程序的输出如下。以下输出显示JFrame以及带有Hello World文本的JLabel。

JLabel的一个文本

让我们看看下一个用文本框创建输入屏幕的例子。在以下示例中,我们要创建一个包含学生姓名,主题和学校名称文本框的表单。在以下示例中,您可以看到以下要点 -

  • 我们正在为屏幕上的控件定义一个布局。在这种情况下,我们使用网格布局。
  • 我们正在为我们的标签使用对齐属性。
  • 我们使用textField方法在屏幕上显示文本框。
import groovy.swing.SwingBuilder 
import javax.swing.* 
import java.awt.*

// Create a builder 
def myapp = new SwingBuilder() 

// Compose the builder 
def myframe = myapp.frame(title : 'Tutorials Point', location : [200, 200], 
   size : [400, 300], defaultCloseOperation : WindowConstants.EXIT_ON_CLOSE) { 
      panel(layout: new GridLayout(3, 2, 5, 5)) { 
         label(text : 'Student Name:', horizontalAlignment : JLabel.RIGHT) 
         textField(text : '', columns : 10) 

         label(text : 'Subject Name:', horizontalAlignment : JLabel.RIGHT) 
         textField(text : '', columns : 10)

         label(text : 'School Name:', horizontalAlignment : JLabel.RIGHT) 
         textField(text : '', columns : 10) 
      } 
   } 

// The following  statement is used for displaying the form 
myframe.setVisible(true)

以上程序的输出如下 -

显示窗体

事件处理程序

现在让我们看看事件处理程序。事件处理程序用于按钮,当按下按钮时执行某种处理。每个按钮伪方法调用包括actionPerformed参数。这表示呈现为闭包的代码块。

让我们来看看我们下一个用2个按钮创建屏幕的例子。当按下任一按钮时,相应的消息被发送到控制台屏幕。在以下示例中,您可以看到以下要点 -

  • 对于定义的每个按钮,我们使用actionPerformed方法并定义一个闭包,以便在单击按钮时向控制台发送一些输出。
import groovy.swing.SwingBuilder 
import javax.swing.* 
import java.awt.* 

def myapp = new SwingBuilder()

def buttonPanel = {
   myapp.panel(constraints : BorderLayout.SOUTH) {

      button(text : 'Option A', actionPerformed : {
         println 'Option A chosen'
      })

      button(text : 'Option B', actionPerformed : {
         println 'Option B chosen'
      })
   }
}

def mainPanel = {
   myapp.panel(layout : new BorderLayout()) {
      label(text : 'Which Option do you want', horizontalAlignment : 
      JLabel.CENTER,
      constraints : BorderLayout.CENTER)
      buttonPanel()
   }
}

def myframe = myapp.frame(title : 'Tutorials Point', location : [100, 100],
   size : [400, 300], defaultCloseOperation : WindowConstants.EXIT_ON_CLOSE){
      mainPanel()
   }

myframe.setVisible(true)

上述程序的输出如下。单击任一按钮时,所需的消息将发送到控制台日志屏幕。

选项按钮

上述示例的另一个变体是定义可以充当处理程序的方法。在下面的例子中,我们定义了DisplayA和DisplayB的2个处理程序。

import groovy.swing.SwingBuilder 
import javax.swing.* 
import java.awt.* 

def myapp = new SwingBuilder()

def DisplayA = {
   println("Option A") 
} 

def DisplayB = {
   println("Option B")
}

def buttonPanel = {
   myapp.panel(constraints : BorderLayout.SOUTH) {
      button(text : 'Option A', actionPerformed : DisplayA) 
      button(text : 'Option B', actionPerformed : DisplayB)
   }
}  

def mainPanel = {
   myapp.panel(layout : new BorderLayout()) {
      label(text : 'Which Option do you want', horizontalAlignment : JLabel.CENTER,
      constraints : BorderLayout.CENTER)
      buttonPanel()
   }
}  

def myframe = myapp.frame(title : 'Tutorials Point', location : [100, 100],
   size : [400, 300], defaultCloseOperation : WindowConstants.EXIT_ON_CLOSE) {
      mainPanel()
   } 

myframe.setVisible(true)

上述程序的输出将保持与前面的示例相同。

DOM生成器

DOM构建器可用于解析HTML,XHTML和XML,并将其转换为W3C DOM树。

以下示例显示如何使用DOM构建器。

String records = '''
   <library>

      <Student>
         <StudentName division = 'A'>Joe</StudentName>
         <StudentID>1</StudentID>
      </Student>

      <Student>
         <StudentName division = 'B'>John</StudentName>
         <StudentID>2</StudentID>
      </Student>

      <Student>
         <StudentName division = 'C'>Mark</StudentName>
         <StudentID>3</StudentID>
      </Student>

   </library>'''

def rd = new StringReader(records) 
def doc = groovy.xml.DOMBuilder.parse(rd)

JsonBuilder

JsonBuilder用于创建json类型的对象。

以下示例显示如何使用Json构建器。

def builder = new groovy.json.JsonBuilder() 

def root = builder.students {
   student {
      studentname 'Joe'
      studentid '1'

      Marks(
         Subject1: 10,
         Subject2: 20,
         Subject3:30,
      )
   } 
} 
println(builder.toString());

上述程序的输出如下。输出clearlt显示Jsonbuilder能够从结构化的节点集合构建json对象。

{"students":{"student":{"studentname":"Joe","studentid":"1","Marks":{"Subject1":10,
"S ubject2":20,"Subject3":30}}}}

jsonbuilder还可以接受一个列表并将其转换为json对象。以下示例说明如何完成此操作。

def builder = new groovy.json.JsonBuilder() 
def lst = builder([1, 2, 3]) 
println(builder.toString());

上述程序的输出如下。

[1,2,3]

jsonBuilder也可以用于类。以下示例显示类的对象如何成为json构建器的输入。

def builder = new groovy.json.JsonBuilder() 

class Student {
   String name  
} 

def studentlist = [new Student (name: "Joe"), new Student (name: "Mark"), 
   new Student (name: "John")] 

builder studentlist, { Student student ->name student.name} 
println(builder)

上述程序的输出如下。

[{"name":"Joe"},{"name":"Mark"},{"name":"John"}]

NodeBuilder

NodeBuilder用于创建Node对象的嵌套树以处理任意数据。下面显示了Nodebuilder的用法示例。

def nodeBuilder = new NodeBuilder() 

def studentlist = nodeBuilder.userlist {
   user(id: '1', studentname: 'John', Subject: 'Chemistry')
   user(id: '2', studentname: 'Joe', Subject: 'Maths')
   user(id: '3', studentname: 'Mark', Subject: 'Physics') 
} 

println(studentlist)

FileTreeBuilder

FileTreeBuilder是一个从规范生成文件目录结构的构建器。以下是如何使用FileTreeBuilder的示例。

tmpDir = File.createTempDir() 
def fileTreeBuilder = new FileTreeBuilder(tmpDir) 

fileTreeBuilder.dir('main') {
   dir('submain') {
      dir('Tutorial') {
        file('Sample.txt', 'println "Hello World"')
      }
   } 
}

从上述代码的执行,将在文件夹main / submain / Tutorial中创建一个名为sample.txt的文件。而sample.txt文件将具有“Hello World”的文本。

由JSRUN为你提供的Groovy在线运行、在线编译工具
        JSRUN提供的Groovy 在线运行,Groovy 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout