【问题标题】:ImageJ opening imagePlus window as an internal frame inside a desktopPaneImageJ 打开 imagePlus 窗口作为 desktopPane 内的内部框架
【发布时间】:2014-05-07 20:55:46
【问题描述】:

我在 ImageJ 的一个文件中遇到了一些问题。基本上设置了一个分析和打开图像的桌面窗格。但是当程序打开图像时,它会将其作为单独的 JFrame 打开。我想成为一个内部的 JFrame。所以基本上图像会在桌面窗格中打开。我已经尝试了一些事情,比如创建一个内部框架类并将 win 添加到 desktopPane 但似乎没有任何工作它仍然将它作为单独的 JFrame 打开。我想知道是否有人知道如何做到这一点。

这是我的代码(这个函数只是调用 .show() 来显示图像,实际打开窗口的 JFrame 的代码在 ImageWindow.java 中):

public void actionPerformed(ActionEvent arg0) {

// TODO Auto-generated method stub

FileOpener open = new FileOpener(file);     

ImagePlus fopen = open.open(false);

 if(fopen != null){
    BufferedImage openImage = fopen.getBufferedImage();
    new ImagePlus(path,openImage).show(desktop); //This functions displays the image
    ImagePlus newImage = new ImagePlus(path,openImage);
    img = newImage;


 }
 frame.setVisible(false);

}

【问题讨论】:

    标签: java imagej


    【解决方案1】:

    新 JFrame 的创建被硬编码到 ImageJ 的 ImagePlus 类中:

    if (stackSize>1)
        win = new StackWindow(this);
    else
        win = new ImageWindow(this);
    

    如果您想调整 GUI,您可以扩展 ImageWindowStackWindow 类。请参阅 Trainable Weka Segmentation 插件以获取一个很好的示例。

    或者,使用ImageJ2的数据结构,即ImgLibImgPlus。这些设计独立于任何用户界面。

    【讨论】:

    • 所以我使用 imageJ2 文件来构建一个新的 imageJ 窗口。我对如何处理这件事有点困惑。
    • 很抱歉,如果提到 ImageJ2 引起了混淆,这是一种替代方法。与现有 GUI 集成的更直接的示例是可训练的 Weka 分割。我在对答案的编辑中添加了指向它的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 2011-04-24
    • 1970-01-01
    相关资源
    最近更新 更多