我是一个Java的初学者。 我有以下ImageFrame类:
public class ImageFrame extends JFrame {
private static final long serialVersionUID = 1L;
public static final int DEFAULT_WIDTH = 1365;
public static final int DEFAULT_HEIGHT = 730;
GettingImage getimg = new GettingImage();
private BufferedImage image = getimg.getImage();
final ImageProcessing operation = new ImageProcessing(image);
public ImageFrame(){
setTitle("ImageTest");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
JMenu process = new JMenu("Process");
JMenuItem greyscale = new JMenuItem("greyscale");
process.add(greyscale);
//adding action listener to menu items
greyscale.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
image = operation.greyscale();
System.out.println("greyscale is pressed");
}
}
);
JMenuBar bar = new JMenuBar();
setJMenuBar(bar);
bar.add(process);
setSize(1365, 730);
setVisible(true);
ImageComponent component = new ImageComponent(image);
add(component);
}
}
当我点击灰度子菜单时,图像并没有转换为灰度,但当我最小化窗口并将其最大化后,图像就变成了灰度。我认为这是因为窗口没有刷新导致的。如何刷新窗口呢?
ImageProcessing
类的情况下很难说。你可能需要为当前的JFrame
调用repaint()
方法。 - Reimeus