一个类似Python和Ruby的新型脚本语言(Orange Script)

这篇博客展示了如何利用OrangeScript动态类型脚本语言,结合Java GUI库Swing,轻松实现一个简单的计算器程序。通过遵循一系列步骤,包括下载OrangeScript和计算器源码,读者可以快速上手并掌握如何在OrangeScript中进行Java GUI编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  Orange Script这是一个支持动态类型的脚本语言,支持函数式编程和prototype based面向对象的OO开发。这个语言同Java可以无缝衔接:可以容易的访问Java的类,同时可以被Java的代码调用。

  同Python、Ruby和Groovy相比,个语言的语法相对更接近Java。所以熟悉Java的朋友学习起来很容易。

  这个动态类型的脚本语言可以极大地加快你的开发速度,然你可以轻松完成开发任务。

  下面是一个用Swing类库的计算器程序的示范程序。

  如果你感兴趣,可以到这个网站查看详细信息: http://www.stonezhong.net/orangescript/index.html

  下面是一个示范:用Orange Script实现一个简单的计算器。

  运行方法:

  (1) 你必须有JRE 1.6或者1.7已经安装

  (2) 下载OrangeScript.jar

  wget http://www.stonezhong.net/orangescript/OrangeScript.jar

  (3) 下载计算器源码

  wget http://www.stonezhong.net/orangescript/contents/examples/calculator.os

  (4) 运行

  java -classpath OrangeScript.jar orangeScript.parser.Main -file calculator.os

  计算器源码

  /**

  * Simple Calculator.

  * This example shows Orange Script can do Java GUI programming.

  *

  * Author: Stone Zhong, stonezhong@hotmail.com

  * Date : Dec 12, 2012

  */

  var EventQueue = $.java.awt.EventQueue;

  var ORunnable = $.orangeScript.javahelper.ORunnable;

  var JFrame = $.javax.swing.JFrame;

  var JPanel = $.javax.swing.JPanel;

  var JButton = $.javax.swing.JButton;

  var GridLayout = $.java.awt.GridLayout;

  var BorderLayout = $.java.awt.BorderLayout;

  var OActionListener = $.orangeScript.javahelper.OActionListener;

  var String = $.java.lang.String;

  var Double = $.java.lang.Double;

  EventQueue.invokeLater(ORunnable.new(function() {

  var frame = JFrame.new();

  frame.setSize(300, 200);

  frame.setTitle("Calculator");

  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  frame.setVisible(true);

  var panel = JPanel.new();

  panel.setLayout(BorderLayout.new());

  bbsp; frame.add(panel);

  var display = JButton.new("0");

  display.setEnabled(false);

  panel.add(BorderLayout.NORTH, display);

  var panel2 = JPanel.new();

  panel2.setLayout(GridLayout.new(4, 4));

  panel.add(BorderLayout.CENTER, panel2);

  var start = true;

  var lastCmd = "=";

  var result = 0;

  var insert = function(event) {

  if (start) {

  display.setText("");

  start = false;

  }

  var input = event.getActionCommand();

  display.setText(display.getText() + input);

  };

  var command = function(event) {

  var input = event.getActionCommand();

  if (start) {

  if (input == "-") {

  display.setText("-");

  start = false;

  } else lastCmd = input;

  } else {

  calculate(Double.parseDouble(display.getText()));

  lastCmd = input;

  start = true;

  }

  };

  var calculate = function(x) {

  if (lastCmd == "+")

  result = result + x;

  else if (lastCmd == "-")

  result = result - x;

  else if (lastCmd == "*")

  result = result * x;

  else if (lastCmd == "/")

  result = result / x;

  else if (lastCmd == "=")

  result = x;

  display.setText(String.valueOf(result));

  };

  var addButton = function(message, handler) {

  var btn = JButton.new(message);

  panel2.add(btn);

  btn.addActionListener(OActionListener.new(handler));

  };

  addButton("7", insert);

  addButton("8", insert);

  addButton("9", insert);

  addButton("/", command);

  addButton("4", insert);

  addButton("5", insert);

  addButton("6", insert);

  addButton("*", command);

  addButton("1", insert);

  addButton("2", insert);

  addButton("3", insert);

  addButton("-", command);

  addButton("0", insert);

  addButton(".", insert);

  addButton("=", command);

  addButton("+", command);

  }));

  复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值