ImageJ:获取特定的单选框

ImageJ: Get specific Radiobox

我正在开发一个用于压缩图像的插件。在 "magic happens" 之前,用户应该决定是否要使用具有三个或四个邻居的方法。 为此,我创建了一个带有 RadioButtonGroup 的通用对话框。

这很好用,我的问题是如何获得用户的选择?方法 getRadioButton 返回一个 Vector。但我不知道该如何处理。我的计划是使用被选择作为我的主要参数的按钮索引 class,但我没有找到管理它的方法。

你有什么想法吗?

编辑:我的代码(不导入)

public class FrameDemo_ extends PlugInFrame {
    public FrameDemo_ (){
        super("FrameDemo");
    }

    public void run (String arg){
        String[] items = {"Option A", "Option B"};
        GenericDialog gd = new GenericDialog("FrameDemo settings");
        gd.addRadioButtonGroup("Test",items,2,1,"0");
        gd.showDialog();
        if (gd.wasCanceled()){
            IJ.error("PlugIn canceled!");
            return;
        }
        String input;
        Vector vec = gd.getRadioButtonGroups();
        Object obj = vec.elementAt(0);
        input = obj.toString();

        this.setSize(250, 250);
        this.add(new Label(input, Label.CENTER));
        this.setVisible(true);
    }
}

我的目标是做类似的事情:

input = obj.Somefunction; // Input contains for exampe "A" for Option A

class RealPlugin (parameter input){
    if(input == A) { do something } // Pseudocode...not the real if for a string 

else if {input == B) {do something else }

我的问题是,当我将对象转换为字符串时,它是:

java.awt.CheckboxGroup[selectedCheckbox=java.awt.Checkbox[checkbox0,0,0,66x23,invalid,label=Option A,state=true}}

我确定有一种方法可以进行字符串操作,但我认为这不是执行此操作的正确方法。我的意思是这一定是一个非常典型的工作(使用单选按钮组来获得用户选择),一定有一个聪明的方法或一个功能...

注意:像这样的问题通常在 ImageJ forum 上得到更快的回答,那里会有更多 ImageJ 专家阅读它们。


要从单选按钮组中检索结果,请使用 ImageJ 中 GenericDialog. Here's a small Groovy script that can be run directly from the script editorgetNextRadioButton 方法:

import ij.gui.GenericDialog

gd = new GenericDialog("FrameDemo Settings")

items = ["Option A", "Option B"]
gd.addRadioButtonGroup("Test", (String[]) items, 2, 1, "0")

gd.showDialog()

if (gd.wasOKed()) {
    answer = gd.getNextRadioButton()
    println answer
}

ImageJ2 (that comes included with the Fiji distribution of ImageJ), it's much easier to get this kind of choice, using SciJava script parameters:

// @String(label="Choice", choices={"Option A", "Option B"}, style="radioButtonVertical") choice

println choice

在 Java 中,相同的内容如下所示:

@Plugin(type = Command.class, menuPath = "Plugins>My New Plugin")
public class MyNewPlugin implements Command {

    @Parameter (label="Choice", choices={"Option A", "Option B"}, style="radioButtonVertical") 
    private String choice;

    // your code here
}

有关完整示例,请参阅 https://github.com/imagej/example-imagej-command