用于将复选框和滑块更改为预定值的预设按钮

时间:2013-11-08 15:46:59

标签: java imagej

我在ImageJ中有一些插件可以查看颜色(RGB或HSB)之间的关系,以便对图像进行分段。它们运行良好,但非常通用,并且在对话框中定义了相当多的复选框和滑块。

我很快就需要手动浏览数百张图像,但我希望能够查看图像并加载给定的预设,这样我才能对设置进行微调。我想添加一系列按钮或下拉菜单,选择后,将所有复选框/滑块的设置更改为该设置中定义的预设值。

下面是我如何定义对话框,但大约有20%的正常设置框/滑块。

    import ij.*;
    import ij.gui.*;
    import ij.process.*;
    import ij.plugin.filter.*;

    import java.awt.*;
    import java.util.*;
    import java.awt.event.*;
    import java.lang.Math.*;

    public class Hue_colors_filter_ implements ExtendedPlugInFilter, DialogListener {

        //private ImagePlus  imp;             // Original image
        private ImageStack sstack;          // Stack result
        private int        width;           // Width of the original image
        private int        height;          // Height of the original image
        private int        size;            // Total number of pixels
        private float[]    c1, c2, c3;      // Colour space values
        private float[]    rf, gf, bf;      // r, g, b values
        private String     colourspace;     // Colour space chosen
    private String     title;           // Name of the original image
        private String     n1, n2, n3;      // Names for every layer on the stack
    private int r,g,b; // rgb values as integers


    ImagePlus imp = null;

    private static int black = 10;
    private static boolean blackshow = true;
    private static boolean magentashow = true;

    public int setup(String arg, ImagePlus imp) {
        if (imp == null) {
            IJ.noImage();
            return DONE;
        }
        if (arg.equals("about")) {
            showAbout();
            return DONE;
        }
        this.imp = imp;
        return DOES_RGB;
    }

    public int showDialog(ImagePlus imp, String command, PlugInFilterRunner pfr) {
            GenericDialog gd = new GenericDialog(command);
            gd.addSlider("Black_max: ", 0., 256., black);
                gd.addCheckbox("_Black", blackshow);
            gd.addCheckbox("_Magenta", magentashow);
                gd.addPreviewCheckbox(pfr);
            gd.addDialogListener(this);
            gd.showDialog();
            if (gd.wasCanceled()) return DONE;
            IJ.register(this.getClass());
            return IJ.setupDialog(imp, DOES_RGB);
        }

        public boolean dialogItemChanged(GenericDialog gd, AWTEvent e) {
            black = (int)gd.getNextNumber();
            blackshow = gd.getNextBoolean();
            magentashow = gd.getNextBoolean();
                return true;
        }
public void run(ImageProcessor ip) {
        try{
            //do some stuff
} // end of try
        catch(Exception e){
            IJ.error("Runtime Error", e.getMessage());
        }
    }

    public void setNPasses (int nPasses) {
    }

    public void showAbout() {
        IJ.showMessage("Hello World!");
    }

}

如果你不能说我非常喜欢java newb。任何帮助或指针赞赏。

1 个答案:

答案 0 :(得分:0)

setup方法接收ImagePlus作为参数。在那里检查,然后根据您的检查,根据需要设置参数(blackblackshowmagentashow等)。然后会调用showDialog方法,并且您的代码已经设置为将参数的初始值正确传递到GenericDialog。所以你应该全力以赴。