Gui带有可自定义的Ruby列表框

时间:2009-06-30 19:07:55

标签: ruby user-interface listbox

我需要在Ruby中编写一个GUI应用程序,它支持在Linux上轻松更改列表框(ownerdraw)中项目的文本颜色。 建议使用哪种GUI框架?

3 个答案:

答案 0 :(得分:2)

没有人知道鞋子

http://shoooes.net/

这是_why,所以它很滑稽,但非常实用。

答案 1 :(得分:1)

对于超级迟到的回答感到抱歉,但万一有人想知道: 如果您正在使用JRuby,我认为Monkeybars应该适用于此。我100%肯定,第一手,它适用于一般列表框操作,但我不是100%确定它是否具有完整的功能。同样不是100%与Ownerdraw列表框的完美结合;为简单起见,我使用了典型的Java-defined-netbeans-built box。

然而,我没有允许用户从列表中选择多行(即ctrl或shift + click)。我记得那在某种程度上是有效的,但就传递功能而言,给我带来了一些麻烦。如果我没记错的话,实际上,我遇到的最大问题就是决定如何管理重新排序列表的请求,同时他们选择了很多东西(如果他们点击了降档或升档按钮的话,那就是EG很多元素)。但除此之外,我认为它运作良好。

从我所看到的两者来看,设置比鞋更复杂,但我发现这是非常有益的(至少就简单的学校作业而言,我需要有一个GUI,但想开始学习Ruby,所以我选择了一个Java Swing前端到JRuby。)

我当然不会是帮助设置它并使所有功能正常工作的最佳来源,不幸的是,关于Monkeybars的信息很少,特别是关于专业的“我如何做X?”各种问题,但有可用的板(链接下面)与非常友好和有用的海报。很像这里:)

http://groups.google.com/group/monkeybars-mvc/topics

* 看起来Kenai页面已被放弃并移至上述google group和github

他们还强制使用MVC架构 - 所以如果你要使用Monkeybars,你需要设计你的程序以兼容这种风格。我从来没有真正认为这是一个大问题,但我确信有些人会害怕被告知如何构建他们的代码。

因此,在完成在计算机上安装Monkeybars工具的麻烦之前,考虑这些是否是交易破坏者是很重要的,但如果你能解决与之相关的一些问题,那么Monkeybars可以成为一个很棒的构建工具(和或许更重要的是 - 操纵)围绕JRuby项目的GUI。

编辑:这是使用Moneybars的一些非常基本的示例代码:

define_signal :add_element, :add_element
def add_element(model, transfer)
 trackList.getModel().addElement(model.addable.to_s)
end

其中“trackList”只是在代码的Java端调用列表的内容(因此“trackList.getModel()”将返回包含列表的列表框模型[对于此项目,我需要7个不同的列表来共享列表框,并通过下拉列表切换;如果您只想要一个列表使用列表框,您可以按名称调用它并删除“.getModel()”部分。“addable”是名称我希望添加到列表中的良好元素/字符串,“model”(小写)是用于符合MVC架构的“模型”类。

对于顶部丑陋的信号部分感到抱歉,我有很长的截止日期,没有足够的时间玩变量名来更好地使用它们。它起作用了,那当时很重要(不幸的是)。我有理由相信第一个是信号的名称(从'control'类发送),第二个可能是紧随其后的定义的引用。对于我在这里的无知感到抱歉,但它让生活变得更容易(就像在Monkeybars示例代码中所解释的那样)。

但是你有它,一个使用JRuby和Swing将元素添加到GUI列表框的功能。它会在发送这些信号时自动重绘屏幕,因此也可以处理。在调用def之后,您将看到更改。修改列表框的其他方面同样简单。希望能帮助任何人:)

答案 2 :(得分:0)

最好的方法是visualruby:

http://visualruby.net

代码看起来像这样:

@view = VR::ListView.new(:name => String, :address => String)
@view.ren_background(:name => "red")
@view.add_row(:name => "Hank", :address => "123 main")

这会使名称列的背景变为红色。 @view变量将用于填充gui表单中的一个点。