运行我的代码时收到以下错误。当在文本框中输入名称时,我试图在面板上的随机位置移动对象,当单击makePetButton时,将在textArea中显示名称。
Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problems:
The method setLocation(int, int) is undefined for the type BufferedImage
The method setLocation(int, int) is undefined for the type BufferedImage
以下是我的代码:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.swing.*;
public class Cyberpet extends JFrame
implements ActionListener {
// GUI code omitted here...
//JPanel bluePanel = new JPanel();
private JButton makePetButton;
private JButton hungryButton;
private JButton resetButton;
private JTextField enterField;
private JLabel petName;
private JTextArea responseArea;
private JPanel panel, buttonGUI;
int x =10;
int y =10;
int m =20;
int k =20;
int xMax = 700;
int yMax = 500;
BufferedImage frogImage = null;
BufferedImage flyImage = null;
Graphics g, frogG, flyG;
public static void main (String[] args) {
Cyberpet frame = new Cyberpet();
frame.setSize(700, 570);
frame.setResizable(false); //disable resizing
frame.getContentPane().setBackground(Color.blue);
frame.createGUI();
frame.show();
}
private void createGUI() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container window = getContentPane();
window.setLayout(new FlowLayout() );
panel = new JPanel();
panel.setPreferredSize(new Dimension(600, 400));
panel.setBackground(Color.white);
window.add(panel);
buttonGUI = new JPanel();
buttonGUI.setPreferredSize(new Dimension(500, 70));
buttonGUI.setLocation(200, 100);
buttonGUI.setBackground(Color.white);
window.add(buttonGUI);
petName = new JLabel("Enter Pet Name!");
buttonGUI.add(petName);
enterField = new JTextField("");
enterField.setPreferredSize(new Dimension(100, 30));
enterField.setLocation(200, 60);
enterField.addActionListener(this);
buttonGUI.add(enterField);
makePetButton = new JButton("Make Pet");
buttonGUI.add(makePetButton);
hungryButton = new JButton("Hungry");
buttonGUI.add(hungryButton);
resetButton = new JButton("Reset");
buttonGUI.add(resetButton);
responseArea = new JTextArea("Pet Status");
// responseArea.addFocusListener(this);
buttonGUI.add(responseArea);
makePetButton.addActionListener(this);
hungryButton.addActionListener(this);
resetButton.addActionListener(this);
}
private void getImages() {
try {
frogImage = ImageIO.read(new File ("C:\\OOP\\CyberPet\\src\\img\\frog.gif"));
flyImage = ImageIO.read(new File ("C:\\OOP\\CyberPet\\src\\img\\fly.gif"));
g = panel.getGraphics();
g.drawImage(frogImage, 500, 25, 40, 40, null); //set position and size of the image
g.drawImage(flyImage, 40, 40, 10, 10, null); //set position and size of the image
} catch (IOException e) {
}
}
// ***** nb line of 4 spaces after insert
public void actionPerformed(ActionEvent event) {
getImages();
if (event.getSource() == makePetButton){
Random rnd = new Random();
int xMax = panel.getWidth()-frogImage.getWidth();
int yMax = panel.getHeight()-frogImage.getHeight();
x = rnd.nextInt(xMax+20);
y = rnd.nextInt(yMax+20);
m = rnd.nextInt(yMax+10);
k = rnd.nextInt(xMax+10);
frogImage.setLocation(x,y);
flyImage.setLocation(m,k);
responseArea.setText(enterField.getText());
}
}
public void draw()
{
}
}
答案 0 :(得分:1)
你的问题就在这一行:
frogImage.setLocation(x,y);
flyImage.setLocation(m,k);
由于frogImage
和flyImage
的类型为BufferedImage
,但未提供名为setLocation(int, int)
的方法,因此您无法调用此方法。
您需要使用容器的布局管理器来定位图像。图像不能直接给出坐标。
答案 1 :(得分:-1)
正如错误所述:BufferedImage
没有setLocation()
方法。