`
googya
  • 浏览: 140402 次
  • 性别: Icon_minigender_1
  • 来自: 汉川
社区版块
存档分类
最新评论

impl与内部类

阅读更多
# To change this template, choose Tools | Templates
# and open the template in the editor.

#puts "Hello World"
include Java
include_class javax.swing.JFrame
include_class javax.swing.JPanel
include_class javax.swing.JButton
include_class java.awt.event.ActionListener
include_class javax.swing.JOptionPane
include_class java.awt.Color


#include_class java.awt.Container
class ButtonFrame < JFrame
  def initialize
    super "Hello world Swing"
    setTitle__method "Button"
    set_size(300,200)
    panel=ButtonPanel.new
    getContentPane().add(panel)
    set_default_close_operation JFrame::EXIT_ON_CLOSE
    set_visible true
  end
end



class ButtonPanel <JPanel
  def initialize
    super
    yellowbutton=JButton.new("Yellow")
    redbutton=JButton.new("Red")
    bluebutton=JButton.new("Blue")
    add(yellowbutton)
    add(redbutton)
    add(bluebutton)   
    yellowbutton.addActionListener ActionListener.impl{ setBackground(Color::YELLOW) }
    bluebutton.addActionListener ActionListener.impl{ 
setBackground(Color::BLUE) }
    redbutton.addActionListener ActionListener.impl{ setBackground(Color::RED) }
      end
#  class Color_T
#      include ActionListener
#      def initialize(c)
#        @c=c
#      end
#      def action_performed(event)
#           setBackground(@c)
#      
#      end
#  end

  
  
end
  ButtonFrame.new


在用class Color_T的时候,出现问题了,Color_T是内部类,但是setbackground是外部类的方法,在Java中这个不存在访问的问题。但是JRuby中出现问题了,但是我还不清楚问题如何解决
分享到:
评论
2 楼 night_stalker 2009-08-23  
用 jruby 跑了下,swing 真慢 ……

something cool:
require 'cici'

app = Cici.app 'color me~~'

app.paint [300, 200] do |v|
  v.marginx = 20 # 左边距
  v.br           # 换一行得到点空间
  v.button('red')   { v.bkcolor = RGB[0xFF0000] }
  v.button('blue')  { v.bkcolor = RGB[0x0000FF] }
  v.button('yello') { v.bkcolor = RGB[0xFFFF00] }
end

app.message_loop
1 楼 night_stalker 2009-08-23  
ruby 的内部类不与实例绑定。自然不能调用外部类的实例方法。

可以改成
    ...
    redbutton.addActionListener Color_T.new(Color::RED, self)
  end # initialize

  class Color_T
    include ActionListener
    def initialize(c, obj)
      @c = c
      @obj = obj
    end
    def action_performed(event)
      @obj.setBackground(@c)
    end
  end
  ...


或者
    ...
    color_me_onpush Color::RED, redbutton
  end # initialize

  def color_me_onpush color, button
    button.addActionListener ActionListener.impl {
      setBackground(color)}
  end
  ...

相关推荐

    Android代码-wehax安卓内部库

    wehax安卓内部库 cn.wehax.common主要包含以下功能: framework 提供一套mvp框架的声明和实现. widget 提供若干控件。 container 为fragment提供容器。 cn.wehax.util包含若干辅助类。 framework ...

    Java规约.docx

    1 ) 【强制】对于 Service 和 DAO 类,基于 SOA 的理念,暴露出来的服务一定是接口,内部的实现类用 Impl 的后缀与接口区别。 正例: CacheServiceImpl 实现 CacheService 接口。 2 ) 【推荐】 如果是形容能力的...

    mapdb-hz-offheap:为土耳其的内存中数据网格构建提供堆外存储

    这是非官方的扩展和Hazelcast公司内部HZ它将替换不支持ConcurrentHashMap与离堆HTreeMap从 。 它独立于其他非堆解决方案,并且在Apache License 2.0下免费提供,没有附加任何挂钩。 作者研究嵌入式数据库引擎,这...

    studentManaager.zip

    数据库层由DAO模块和mapper模块组成,控制层由service模块和impl模块和controller模块构成,界面层由html页面和bootstrap实现,采用mysql,springboot,mvc,mybatis,gengerator,以及springcloud的父子类项目搭建...

    libproc:与libproc.dylib的低级绑定

    与libproc.dylib的低级绑定介绍该模块包含有关libproc.dylib共享库有趣部分的描述和包装。 该库公开有关OS X进程的内部内核数据。它是使用i386体系结构在OS X 10.7.5上开发和测试的。 由于该库没有详细记录,因此从...

    阿里巴巴编码规范 基础技能认证 考题分析(考题+答案).docx

    对于Service类,内部的实现类加Impl的后缀与接口区别。例如:ProductServiceImpl实现ProductService接口。 C .对于Service类,基于SOA的理念,是以接口方式暴露服务。 D .尽量不在接口里定义变量,如果一定要...

    destral_ecs:在 C 中实现 ECS 之类的 ETT

    内部实现使用基于优秀的ENTT (C++) ECS 库的稀疏集。 项目目标: 组件的快速迭代 (SOA)。 快速编译。 超级简单的 API 使用。 基本用法: 仅下载 destral_ecs.h 标头。 然后在只有一个源文件中,执行以下操作: ...

    vc++ 开发实例源码包

    template&lt;class T&gt; class DWebBrowserEvent2Impl; // ATL::CDialogImplBaseT template,class TBase&gt; class CDHtmlDialogImpl; template, class TBas&gt; class CMultiPageDHtmlDialogImpl; autoplaysnd mp3 播放器源码...

    AutoCode代码生成器(JAVA版)

    ★ IMPL接口实现类 ★ DAO工厂 ★ VO、POJO工厂 ★ DBC数据库连接管理类,数据库事务处理机制 ★ Servlet业务处理及其配置文件 ★ JSP调用页面(增、删、改、查),分页功能自动实现 3、特色: ☆ 一键生成,简洁...

    rust-delegate:使用较少样板的 Rust 方法委托

    少样板的方法委托 这个 crate 删除了一些结构体的样板,这些结构体只是...impl &lt;T&gt; Stack &lt;T&gt; { pub fn new () -&gt; Self &lt;T&gt; { Self { inner: vec! [] } } delegate! { to self .inner { pub fn is_empty ( & sel

    MIPP:MIPP是用于用C ++ 11编写的SIMD指令的便携式包装器。 它支持NEON,SSE,AVX和AVX-512

    使用MIPP包装器,您不再需要编写特定的内部代码。 只需使用提供的功能,包装器就会针对您的特定体系结构自动生成正确的内部调用。各种各样的科学出版物艾德里安·卡萨涅(Adrien Cassagne),奥利维尔·奥马尔...

    AutoCode代码生成器(ASP.NET版)

    ★ IMPL接口实现类 ★ DAO工厂 ★ VO、POJO工厂 ★ DBC数据库连接管理类,数据库事务管理机制 ★ ASPX调用页面(增、删、改、查)(含.CS文件),分页功能自动实现 ★ Web.Config配置文件(VS2005工程需要的文件) 3、...

    EvoPlan:EvoPlan的复制包

    发展计划 此文件夹包含EvoPlan-EASE 2021会议的复制包。 使用步骤1 mvn exec:java -Dexec.mainClass="org.... 请注意,您必须更改文件内部的字符串并移动或删除当前的neo4j graph.db,否则当前评估回合将覆盖前一个。

    autocode中文java版

     ★ IMPL接口实现类  ★ DAO工厂  ★ VO、POJO工厂  ★ DBC数据库连接管理类,数据库事务处理机制  ★ Servlet业务处理及其配置文件  ★ JSP调用页面(增、删、改、查),分页功能自动实现  3、特色:  ☆ ...

    jFAST:此存储库包含 RingBufferLogger 的第一个版本

    这个存储库包含 org.slf4g.impl.RingBufferLogger 的第一个版本,SimpleLogger 的扩展。 此类将日志消息存储在内部或外部 RingBuffer 中。 默认情况下,这个记录器将从内部环形缓冲区(在单独的线程中)读取消息并将...

    通用分页组件

    内部提供了源代码实现,以及DEMO应用,实现分页非常简单; 需要做的工作有三个地方 1.继承实现分页的抽象类AbstractPage 的两个抽象方法; 2.调用WebPageUtils.doAction方法传入参数即可 3.直接获取...

    DRAT:部署恢复自动化技术

    它将处理Docker容器内部的数据库迁移。 初始化(构建)dbutils容器映像(需要通过brew / apt / yum安装realpath) $ ./dbutil.sh build 配置(如果需要)并将数据库模式升级到最新版本 $ ./dbutil.sh upgrade ...

    coursework-forth

    内部解释器(请参见src/forthress.asm next src/forthress.asm )是用汇编语言编写的,有些单词也是用汇编语言编写的。 大多数语言特征都是童话,与经典的福斯方言非常接近。 关于Forthress必须提及的几件事: 它...

    ochre:在GPU上呈现高质量的抗锯齿矢量图形

    ochre黄将路径边界处的一组8×8像素alpha蒙版拼贴的路径栅格化,并为路径内部栅格化n×8像素的实体跨度,然后可以将其上载到GPU并进行渲染。 使用适用于文本和一般矢量图形的高质量分析抗锯齿方法对路径进行栅格化...

Global site tag (gtag.js) - Google Analytics