использование ActionListener для мониторинга активности флажков в Java (вызывается из Ruby) - PullRequest
0 голосов
/ 08 ноября 2018

Я использую скрипт ruby ​​из другого приложения для вызова некоторого Java-файла, чтобы отобразить форму, принять ввод пользователя и выполнить некоторую обработку. Я застрял на стороне графического интерфейса в реализации «основного флажка» в форме для управления другими флажками - так, чтобы пользователь мог выбрать вариант 1 или вариант 2, или они могут использовать флажок «Мастер», чтобы выбрать оба варианта или нет опции (это немного упрощено для устранения неисправностей).

Я пробовал как с ItemListener, так и с ActionListener, любого из которых должно быть достаточно, однако я получаю следующее сообщение об ошибке: NoMethodError: неопределенный метод `Implements 'для 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
...