因此,我尝试创建一个简单的应用程序,在该应用程序中,我可以单击按钮并允许用户使用菜单中的jFIleChooser显示他们选择的图像,并将该图像显示在标签中。我编写的代码适用于此,但我应该创建并使用一个名为" BufferedImage的方法getImage()"使用类" ImageManipulator"实际运行该代码,以便我可以调用该方法而不是运行主类中的所有代码。这就是我所拥有的:(我的ImageManipulator类)
public class ImageManipulator extends MainWindow {
BufferedImage image;
public ImageManipulator() {
image = null;
}
public ImageManipulator(BufferedImage image){
this.image = image;
}
public BufferedImage getImage() {
FileChooser.showOpenDialog(null);
BufferedImage image = null;
try{
File myFile = FileChooser.getSelectedFile();
image = ImageIO.read(myFile);
labelImage.setIcon(new ImageIcon(image));
}
catch(IOException e){
}
return image;
}
和GUI的主窗口(实际按下buttonClicked的代码):
private void buttonChooseActionPerformed(java.awt.event.ActionEvent evt) {
ImageManipulator myManipulator = new ImageManipulator(image);
myManipulator.getImage();
}
因此它出现错误,因为myManipulator中的图像变量尚未声明或初始化。我意识到我需要在我的主窗口中初始化上面的图像变量并且" connect"它以某种方式通过getImage()返回的图像变量,我只是不确定如何这样做或者设置图像等于什么,以便它实际运行getImage()方法中的代码。我不习惯使用类和OO编程,所以希望有人可以在这里给我一些指导。
答案 0 :(得分:0)
为了使方法正常工作,我删除了第二个构造函数
public ImageManipulator(BufferedImage image){
this.image = image;
}
并使用第一个构造函数进行了一些小的更改
public ImageManipulator() {
this.image = image;
}
创建ImageManipulator myManipulator = new ImageManipulator();
时,因为在这种情况下实际上不需要传递myManipulator参数。