我试图在此代码中更改图片。我尝试调用public函数,并在我想调用它们时能够加载。我想知道如何执行此操作,这样就可以将它们放入if语句,while循环或case语句中。

在这段代码中,我调用了一个公共函数:


测试chill = new chill();


import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;

public class test extends Component {

    BufferedImage img;
    BufferedImage img1;

    public void paint(Graphics g) {
        g.drawImage(img, 0, 0, null);
        g.drawImage(img1,0,0,null);
    }

    public test() {
       try {
           img = ImageIO.read(new File("smile.png"));
       } catch (IOException e) {
       }

    }
    public chill() {
       try {
           img1 = ImageIO.read(new File("chill.png"));
       } catch (IOException e) {
       }

    }
//img1= ImageIO.read(new File("chill.png"));

    public Dimension getPreferredSize() {
        if (img == null) {
             return new Dimension(100,100);
        } else {
           return new Dimension(img.getWidth(null), img.getHeight(null));
       }
    }

    public static void main(String[] args) {

        JFrame f = new JFrame("Load Image Sample");

        f.addWindowListener(new WindowAdapter(){
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });

        test chill = new chill();

        f.add(new test());
        f.pack();
        f.setVisible(true);
    }
}


我在这方面做错了什么?如果您有解释此问题的网站,请在此处发布!多谢了!

这个程序是我做的有趣的事情。

最佳答案

首先,课程应以大写字母开头(按照惯例)。第二

test chill = new chill();


应该

test chill = new test();


因为chill是变量名,而test是类。另外,那是一个构造函数(不是方法)。并且,在chill类中不能有test构造函数。

// public chill() {
//   try {
//       img1 = ImageIO.read(new File("chill.png"));
//   } catch (IOException e) {
//   }
// }


您可以有一个chill方法

public void chill() {
   try {
       img1 = ImageIO.read(new File("chill.png"));
   } catch (IOException e) {
   }
}


然后

new test().chill();


会工作。

07-24 21:11