`
googya
  • 浏览: 144071 次
  • 性别: 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
  ...

相关推荐

    yang-parser-impl-92

    总结起来,"yang-parser-impl-92"是实现Yang数据模型解析的关键组件,它解析Yang模块,确保语法规则的正确性,并生成可供后续处理的内部数据结构。通过理解其工作原理,开发者可以更好地利用Yang来设计和实现网络...

    mojarra_web项目需要的包_jsf-impl.jar_

    例如,`javax.faces.component.UIComponent` 类代表一个可渲染的UI组件,而`javax.faces.event.ActionEvent` 则表示一个与用户交互相关的事件。 **jsf-impl.jar** `jsf-impl.jar` 文件则包含了JSF框架的实现代码,...

    win_impl.rar_event_sunwindow

    标题“win_impl.rar_event_sunwindow”暗示我们正在讨论与Windows实现相关的特定库,特别是与太阳窗口(SunWindow)事件管理有关的私有数据结构。在Windows操作系统中,事件管理是图形用户界面(GUI)编程的核心部分...

    sort_impl.rar

    "sort_impl.rar"这个压缩包包含了多种排序算法的实现与测试代码,主要涉及了C++语言。文件包括"sort_test.cpp"、"sort-impl.h"和"sort.h"。 首先,我们来探讨一下排序算法的基本概念。排序是将一组无序的数据元素...

    jsf2.0源碼(myfaces2.0.4 api+impl)

    **JSF 2.0 源码解析:MyFaces 2.0.4 API + Impl** JavaServer Faces (JSF) 是一个用于构建企业级Web应用的Java框架,它提供了一种组件化的方式来创建用户界面。JSF 2.0是其一个重要版本,引入了许多新特性以提升...

    pimpl-idiom.rar_pimpl_site:www.pudn.com

    由于类的接口没有改变,即使`Impl`类发生了变化,只要保证接口兼容,原有的二进制文件仍可以与新版本的库协同工作,增强了二进制兼容性。 ### 实现步骤 1. **定义接口类(Public Class)**:公开接口类声明一个...

    yang-parser-data-impl-95

    yang-parser-impl-95很可能是一个实现了YANG语法解析的库,能够读取YANG模块,并将其转换为内部表示,以便进一步处理。另一方面,yang-data-impl-95可能包含处理YANG数据模型实例的代码,包括读取、写入、验证和操作...

    parser-data-impl-95

    解析器将YANG语法解析成内部数据结构,使得其他程序能够方便地操作这些数据。 2. **数据处理(Data Processing)**: `yang-data-impl`可能是指实现了对解析后的YANG数据进行操作的模块。这包括数据的读取、写入、...

    pimpl_sample.rar_pimpl

    3. **封装与信息隐藏**:"Impl"类可以是私有的,使得用户无法直接访问其实现,增强了封装性,保护了类的内部状态。 4. **异常安全**:在构造函数中,先创建"Impl"对象,再分配内存,如果分配失败,可以直接抛出异常...

    COM 嵌套类实现COM

    嵌套类,也称为内部类,是在一个类的定义内部定义的类。它可以访问外部类的所有成员,包括私有成员,这为COM组件设计提供了灵活性。嵌套类在COM中的应用通常用于封装特定的功能或数据,使其只对COM组件内部可见,对...

    Book_pImpl.zip

    Pimpl惯用法的基本思想是将类的私有数据成员(即实现部分)封装在一个单独的内部类(Impl类)中,然后在主类中仅保留一个指向Impl类的指针。这样做的好处在于: 1. **编译时隔离**:当修改类的实现细节时,只有Impl...

    StringImpl:带有C ++的字符串类impl

    在C++编程语言中,`StringImpl`通常指的是一个内部实现细节,它是标准库`std::string`的一个可能的实现。`std::string`是一个非常重要的容器类,用于存储、操作和管理C风格的字符数组,即字符串。在这个场景下,`...

    xmpp-iks_impl.tar.gz_IKS XM_xmpp

    - **企业通讯**:XMPP可用于构建内部即时通讯系统,提升团队协作效率。 - **物联网**:设备间可以通过XMPP进行数据交换和控制命令传输。 - **游戏**:实时游戏中的聊天、组队等功能可以利用XMPP实现。 - **社交...

    brave-impl-spring-2.2.0.zip

    6. **开源软件**:Schwatcher和Brave的开源特性,使得开发者可以深入理解其内部机制,参与改进,并与其他开发者共享经验。 了解这些知识点后,开发者可以结合实际需求,选择合适的工具来提升系统的监控能力、扩展性...

    Android代码-wehax安卓内部库

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

    rewrite-impl-servlet-3.0-2.0.3.Final.zip

    标题 "rewrite-impl-servlet-3.0-2.0.3.Final.zip" 提供了一个关于Web应用程序开发的线索,特别是与Servlet 3.0规范相关。这可能是一个用于URL重写或路由的库,可能名为"Rewrite Impl",版本号为2.0.3.Final。在Java...

    用 Rust 编写的内部 DirectX 11 ImGui 菜单.zip

    用 Rust 编写的内部 DirectX 11 ImGui 菜单英费里斯用Rust编写的概念验证内部 DirectX 11 ImGui菜单。Imferris通过 Rust 到 C++ 的互操作利用imgui_impl_win32.cpp平台和imgui_impl_dx11.cpp渲染器。用法确保安装了...

    pimple的例子代码,仅供参考

    4. **封装与私有化**:Pimpl idiom增强了封装性,因为实现部分是私有的,只有类的内部可以访问。 在提供的文件名`pimpl`中,我们可以预期它包含了实现Pimpl idiom的C++代码。通常,这个文件会包含一个类,如`...

    linux24x_sec_impl.pdf

    文章将重点介绍 Linux 2.4.x 内核中与 IPv4 相关的安全性实现,同时也将提及该版本在网络安全方面的重要概念:netfilter、iptables、match、target、nf_sockopt_ops 以及它们之间的关系。 #### 几个重要概念 1. **...

    addon-manager-impl-2.0.0.Alpha4.zip

    标题中的"addon-manager-impl-2.0.0.Alpha4.zip"表明这是一个软件的更新版本,具体来说是Addon Manager的实现部分,版本号为2.0.0的Alpha4阶段。Addon Manager通常是一个用于管理软件扩展或插件的工具,它帮助用户...

Global site tag (gtag.js) - Google Analytics