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 editor 的 getNextRadioButton
方法:
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
}
我正在开发一个用于压缩图像的插件。在 "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 editor 的 getNextRadioButton
方法:
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
}