使用JavaSwing的Ruby表示计数为零
您好,我是javax.swing的新手,我想问你们为什么我会出现这个错误(我将在我的代码后面加上确切的错误)。我已经尝试了我能找到的一切。谢谢你们,如果这是一个简单的解决办法,我很抱歉,我现在在ruby方面真的很差劲使用JavaSwing的Ruby表示计数为零,ruby,swing,jruby,Ruby,Swing,Jruby,您好,我是javax.swing的新手,我想问你们为什么我会出现这个错误(我将在我的代码后面加上确切的错误)。我已经尝试了我能找到的一切。谢谢你们,如果这是一个简单的解决办法,我很抱歉,我现在在ruby方面真的很差劲 testGui.rb #javaSwingHello.rb 需要“java”#第2行 JFrame=javax.swing.JFrame JLabel=javax.swing.JLabel JPanel=javax.swing.JPanel JButton=javax.swing.
testGui.rb
#javaSwingHello.rb
需要“java”#第2行
JFrame=javax.swing.JFrame
JLabel=javax.swing.JLabel
JPanel=javax.swing.JPanel
JButton=javax.swing.JButton
BorderFactory=javax.swing.BorderFactory
BorderLayout=java.awt.BorderLayout
GridLayout=java.awt.GridLayout
计数=1
frame=JFrame.new
panel=JPanel.new
button=JButton.new“单击我”
button.addActionListener self
label=JLabel.new“点击次数:0”
panel.setboorder BorderFactory.createEmptyByOrder(70,70,20,70)
panel.setLayout GridLayout.new(0,1)
panel.add按钮
panel.add标签
frame.add面板,BorderLayout::CENTER
frame.setDefaultCloseOperation(JFrame::在关闭时退出)
frame.setTitle“测试GUI”
frame.pack
frame.setVisible true
已执行的def操作(事件)
计数+=1
texttoset=“点击次数”+计数
label.setText(texttoset)
结束
错误(我按下按钮时收到此信息)
更多的Ruby问题-局部变量不会被复制到新的作用域中:
def actionPerformed(事件)
计数+=1
texttoset=“点击次数”+计数
label.setText(texttoset)
结束
count
是方法的局部变量(最初为nil
),因此失败
如果您只是在进行测试,您可以使用全局
$count = 1
def actionPerformed(event)
$count += 1
texttoset = "Number of clicks " + count
label.setText(texttoset)
end
也就是说,不要使用globals,而是设置一个适当的对象来封装状态并“实现”执行的
操作接口。您没有说,您将如何使用执行的操作,但一种可能性是将该方法设为lambda:
您必须将其作为
$ActionPerformed.call(myEvent)
actionPerformed
中的count
变量与以前使用的count
不同。如果确实要创建闭包,则需要使用块。
count = 1
$ActionPerformed = -> (event) do
count += 1
texttoset = "Number of clicks " + count
label.setText(texttoset)
end
$ActionPerformed.call(myEvent)