2017-04-20 30 views
0

我正在處理一個壓縮圖像的插件。在「魔術發生」之前,用戶應該決定,如果他想用三個或四個鄰居的方法。 爲此,我創建了一個帶有RadioButtonGroup的通用對話框。ImageJ:獲取特定的Radiobox

這工作正常,我的問題是我如何得到用戶的選擇?方法getRadioButton返回一個Vector。但我不知道如何處理這個問題。我的計劃是使用按鈕索引作爲我的主類選擇參數,但我沒有看到一種方法來管理這個。

你有什麼想法嗎?

編輯:我的代碼(不含進口)

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}}

我敢肯定,有一種字符串操作的方式,但我不認爲這是做到這一點的正確方法。我的意思是這必須是一個非常典型的工作(使用RadioButtonGroup中獲得用戶的選擇),必須有一個聰明的辦法或功能...

+0

請出示,你做了什麼 –

回答

1

注意:類似這樣的問題通常回答快得多的ImageJ forum,更多ImageJ專家將會閱讀它們。


要檢索從無線電按鈕組的結果,使用的GenericDialoggetNextRadioButton方法。下面是可以直接從ImageJ中的script editor運行一個小的Groovy腳本:

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(附帶附帶的ImageJ的Fiji分佈),它更容易得到這樣的選擇,使用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

+0

對不起,我遲到的迴應。我試着在最近兩天使用你的代碼片段,但是我得到的只是IDE中的錯誤代碼(IntelliJ)或消息「Unable to load plugin(ins)」。 我認爲我的代碼應該在「你的代碼在這裏」的地方工作,我做了一些改變,看看這是否有幫助,但總而言之,這是行不通的。 我看你的例子,但它並沒有真正幫助我。 你可以給我一個簡單的例子,其中,在單選按鈕選擇後,出現一個窗口中出現一個新窗口,其中A表示選項A的消息「A」,B表示窗口中央的字符串B的選項B。 –