- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我想我问了一个新问题,这是我的旧问题的延伸。因此,我能够将 ImageJ 窗口中的内容放入桌面 Pane 内的 JInternal 框架中。但图像不会随着帧尺寸的放大而缩放。我发现了几种主要使用 ImageJ 中的缩放类的方法,但它不会缩放以适应框架。所以我想知道是否有人知道我做错了什么。放大可以工作,缩小也可以,但是缩放和缩放的设置不起作用,我不知道为什么。预先感谢。
这是我的代码的一部分:
public class CustomGui extends ImageWindow implements InternalFrameListener, ComponentListener, ActionListener{
public CustomGui(ImagePlus imp, String title, JDesktopPane desktop, final JMenuItem save, JWindow win, JMenuItem fft) {
super(imp);
// TODO Auto-generated constructor stub
setCall();
img = imp;
save.setEnabled(true);
fft.setEnabled(true);
//this.title = title;
this.win = win;
this.fft = fft;
this.save = save;
JPanel panel = new JPanel();
ImageCanvas c = new ImageCanvas(imp);
c.getImage();
//panel2.add(new JLabel(new ImageIcon(c.getImage())));
m = new ImageWindow(img);
Image n = new Image();
frame = new MyInternalFrame(title, img, save,m);
//ImageCanvas c = m.getCanvas();
ImagePlus im = new ImagePlus();
im.setImage(img);
//ImageRoi roi = ImageRoi();
//panel.add(c);
// frame.add(m.getContentPane());
m.centerNextImage();
//This is where I try to use the zoom class.
img.getCanvas().setScaleToFit(true);
//ImageCanvas nu = new ImageCanvas(img);
//nu.setScaleToFit(true);
//I set arg to "scale" but it doesn't work, even when I put it in component resized listener.
Zoom z = new Zoom(img);
String arg = "orig";
z.run(arg);
//m.setLocationRelativeTo(frame);
//m.setLocationAndSize(true);
//m.setLocationAndSize(frame.getWidth(), frame.getHeight(), frame.getWidth(), frame.getHeight());
panel.add(m.getCanvas());
panel.setBackground(Color.white);
frame.add(panel);
frame.setVisible(true);
frame.setAutoscrolls(true);
frame.setAutoscrolls(true);
desktop.add(frame);
try {
frame.setSelected(true);
} catch (java.beans.PropertyVetoException e) {
}
frame.addInternalFrameListener(this);
frame.addComponentListener(this);
//win.add(desktop);
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals(SHOW)){
save.setEnabled(true);
frame.addInternalFrameListener(this);
}
System.out.println("beingg called");
}
public void setCall(){
called = true;
}
public void setCallF(){
called = false;
}
public boolean getCall(){
return called;
}
//This is where the internal frame is resized.
@Override
public void componentResized(ComponentEvent arg0) {
// TODO Auto-generated method stub
Rectangle r = frame.getBounds();
// int h = (int) r.getHeight();
// int w = (int) r.getWidth();
// m.resize(w, h);
//m.getCanvas().unzoom();
//m.setLocationAndSize((int)r.getWidth(), (int)r.getHeight(), (int)r.getWidth(), (int)r.getHeight());
m.getCanvas().fitToWindow(r);
System.out.println("resized- the real one");
}
@Override
public void componentShown(ComponentEvent arg0) {
// TODO Auto-generated method stub
frame.show();
}
}
我还向 Zoom 类添加了一个构造函数(这是 Zoom 类的一部分):
/** This plugin implements the commands in the Image/Zoom submenu. */
public class Zoom implements PlugIn{
ImagePlus imp;
public Zoom (ImagePlus img){
imp = img;
}
public void run(String arg) {
//ImagePlus imp = WindowManager.getCurrentImage();
//ImagePlus imp = img;
if (imp==null)
{IJ.noImage(); return;}
ImageCanvas ic = imp.getCanvas();
if (ic==null) return;
Point loc = ic.getCursorLoc();
if (!ic.cursorOverImage()) {
Rectangle srcRect = ic.getSrcRect();
loc.x = srcRect.x + srcRect.width/2;
loc.y = srcRect.y + srcRect.height/2;
}
int x = ic.screenX(loc.x);
int y = ic.screenY(loc.y);
if (arg.equals("in")) {
ic.zoomIn(x, y);
if (ic.getMagnification()<=1.0) imp.repaintWindow();
} else if (arg.equals("out")) {
ic.zoomOut(x, y);
if (ic.getMagnification()<1.0) imp.repaintWindow();
} else if (arg.equals("orig"))
ic.unzoom();
else if (arg.equals("100%"))
ic.zoom100Percent();
else if (arg.equals("to"))
zoomToSelection(imp, ic);
else if (arg.equals("set"))
setZoom(imp, ic);
else if (arg.equals("max")) {
ImageWindow win = imp.getWindow();
win.setBounds(win.getMaximumBounds());
win.maximize();
} if (arg.equals("scale"))
scaleToFit(imp);
}
最佳答案
在 Zoom.java
,我没有看到任何构造函数接受参数。您确定要导入并使用 ij.plugin.Zoom
?
标准 ImageJ GUI 允许使用 ij.plugin.Zoom 类进行缩放。在 Fiji's script editor 中运行以下 JavaScript 片段在正常和缩放以适应模式之间切换:
zm = new Zoom();
zm.run("scale");
ImageJ 主窗口的状态栏(以及 Zoom.java
的源代码)还提供了提示,在调整窗口大小时按 alt 将显示图像缩放到窗口大小。
抱歉,我没有花时间摆弄您的代码:它并不是真正的 minimal example .
关于java - 如何使图像相对于其框架缩放(ImageJ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23699949/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!