Я использую скрипт 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