使用ActionListener监视Java中的复选框活动(从Ruby调用)

时间:2018-11-08 05:16:37

标签: java ruby actionlistener jcheckbox

我正在另一个应用程序中使用ruby脚本来调用某些Java以显示表单,接受用户输入并进行一些处理。我在gui方面遇到的问题是在表单上实现“主复选框”以控制其他复选框-这样用户可以选择选项1或选项2,或者他们可以使用主复选框选择两个选项,或者不选择选项(简化了很多故障排除步骤)。

我已经尝试使用ItemListener和ActionListener两者都足够了,但是我收到此错误消息: NoMethodError:ActionListen:Class的未定义方法“实现”

出于故障排除的目的,我已将代码简化为基本内容。我在这里检查了同时实现ItemListener和ActionListener的其他示例,这些示例都是Java代码,而不是从ruby内部调用的,但是我通常尝试遵循其实现方式。

# Menu Title: (spo)zzTest_script

# Import java classes for GUI panel
require 'java'
java_import javax.swing.JOptionPane
java_import javax.swing.JCheckBox
import javax.swing.JTextField
import javax.swing.JSeparator
import javax.swing.JPanel
import javax.swing.JFrame
import javax.swing.JLabel
import javax.swing.JRadioButton
import javax.swing.ButtonGroup
import javax.swing.JComboBox
import java.awt.event.ActionEvent
import java.awt.event.ActionListener

#Set up gui for user
panel = JPanel.new(java.awt.GridLayout.new(0,1)) #panel of rows, cols
panel.add (JSeparator.new)
panel.add(JLabel.new("<html><b>1. Options:</b></html>"))
checkbox_Master = JCheckBox.new("<html><b>Turn ALL on/off</b></html>",true)
panel.add(checkbox_Master)
checkbox_Option1 = JCheckBox.new("1.1 Option 1",true)
panel.add(checkbox_Option1)
checkbox_Option2 = JCheckBox.new("1.2 Option 2",true)
panel.add(checkbox_Option2)

#define ActionListen class
private class ActionListen implements java.awt.event.ActionListener{
    public void actionPerformed(ActionEvent e) {            
        if (e.getStateChange() == ActionEvent.SELECTED) 
            puts "Master Checkbox selected"
        else 
            puts "Master Checkbox NOT selected"
        end
    }
} 
end

#add listener to Master checkbox    
checkbox_Master.addActionListener(new ActionListen()) 

# Proceed or Exit button
confirm_settings = JOptionPane.showOptionDialog(JFrame.new, panel, "Processing options", JOptionPane::YES_NO_OPTION, JOptionPane::PLAIN_MESSAGE, nil, ["Continue","Exit Script"],"Continue")
if confirm_settings != JOptionPane::YES_OPTION
    exit 1
end

#output summary of processing options to user
if checkbox_Master.isSelected == true 
    msg = "Master Checkbox is selected"
else
    msg = "Master Checkbox is NOT selected"
end
puts msg

0 个答案:

没有答案