0
下面的代码显示了打开图像时,用户应该能够使用箭头键放大和缩小图像。但是,当我放大我得到如下图:ImageJ zoom不刷新图像
我希望有人能看到我错了原因,当我移动帧(有点像清爽型),那么图片是好的,但如果你不要移动它,然后这就是你所看到的。我想解决这个问题,即使你不移动框架的照片仍然可以。提前致谢。
这里是它包含的ImageJ的变焦类的调用主类:
zoom = new JMenu("Zoom");
zoom.setEnabled(false);
JMenuItem in = new JMenuItem("Zoom In");
in.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_UP, ActionEvent.ALT_MASK));
in.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
MyInternalFrame selectedFrame = (MyInternalFrame) desktop.getSelectedFrame();
Zoom z = new Zoom(selectedFrame.getImage());
String args = "in";
z.run(args);
}
});
JMenuItem out = new JMenuItem("Zoom Out");
out.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, ActionEvent.ALT_MASK));
out.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
MyInternalFrame selectedFrame = (MyInternalFrame) desktop.getSelectedFrame();
Zoom z = new Zoom(selectedFrame.getImage());
String args = "out";
z.run(args);
}
});
zoom.add(in);
zoom.add(out);
我也有一个构造函数添加到变焦所以它会拿我的定制GUI打开图像(这是在变焦类):
ImagePlus imp;
public Zoom (ImagePlus img){
imp = img;
}
在自定义窗口类中,当图像被打开,我有一个组件监听器,调整图像大小以适应帧尺寸和工作得非常好(我不知道这是问题):
@Override
public void componentResized(ComponentEvent arg0) {
// TODO Auto-generated method stub
Rectangle rect = desktop.getSelectedFrame().getBounds();
MyInternalFrame f = (MyInternalFrame) desktop.getSelectedFrame();
f.getImage().getCanvas().fitToWindow(rect);
System.out.println("resized- the real one");
}
在同一个班级,这里就是将图像添加到帧:
JPanel panel = new JPanel();
ImageCanvas c = new ImageCanvas(image);
c.getImage();
//panel2.add(new JLabel(new ImageIcon(c.getImage())));
m = new ImageWindow(image);
Image n = new Image();
//frame = new MyInternalFrame(title, img, save,m);
//ImageCanvas c = m.getCanvas();
ImagePlus im = new ImagePlus();
im.setImage(image);
String [] array = title.split("/");
//System.out.println("in manager: "+array[5]);
//image.setTitle(path);
frame = new MyInternalFrame(image.getTitle(), image, save, title);
m.centerNextImage();
//image.getCanvas().setScaleToFit(true);
panel.add(m.getCanvas());
panel.setBackground(Color.white);
frame.add(panel);
frames.add(frame);
frame.setVisible(true);
frame.setAutoscrolls(true);
frame.setAutoscrolls(true);
//frame.setOpaque(true);
frame.setResizable(true);
desktop.add(frame);