Java 如何使矩形在图像中移动?
基本上,我加载了一个图像,当我单击图像的一部分时,会显示一个矩形(没有填充)。如果我再次单击图像的另一部分,该矩形将再次显示。每次单击都会显示相同的矩形 到目前为止,我有这个代码,现在我不知道如何使图像出现。我的图像来自我的文件目录。我已经编写了从文件目录获取图像的代码Java 如何使矩形在图像中移动?,java,swing,drawrect,paintcomponent,mouselistener,Java,Swing,Drawrect,Paintcomponent,Mouselistener,基本上,我加载了一个图像,当我单击图像的一部分时,会显示一个矩形(没有填充)。如果我再次单击图像的另一部分,该矩形将再次显示。每次单击都会显示相同的矩形 到目前为止,我有这个代码,现在我不知道如何使图像出现。我的图像来自我的文件目录。我已经编写了从文件目录获取图像的代码 import java.awt.Color; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseList
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class MP2 extends JPanel implements MouseListener{
JFrame frame;
JPanel panel;
int x = 0;
int y = 0;
String input;
public MP2(){
}
public static void main(String[] args){
JFrame frame = new JFrame();
MP2 panel = new MP2();
panel.addMouseListener(panel);
frame.add(panel);
frame.setSize(200,200);
frame.setVisible(true);
}
public void mouseClicked(MouseEvent event) {
// TODO Auto-generated method stub
this.x = event.getX();
this.y = event.getY();
this.repaint();
input = JOptionPane.showInputDialog("Something pops out");
System.out.println(input);
}
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void paintComponent(Graphics g){
super.paintComponent(g);
// this.setBackground(Color.white); *Sets the bg color of the panel
g.setColor(new Color(255,0,0));
g.drawRect(x, y, 100, 100);
}
}
这个.x和这个.y指的是JPanel的x和y,而不是要绘制的矩形。您需要创建另外两个字段,rectX和rectY。这些在鼠标单击中设置并由paintComponent()使用 编辑
对不起,我的错。我现在很困惑。你必须声明一个x和y。这些仍然应该重命名,因为它们可能与组件中定义的x和y混淆,但它们不是问题所在。当我运行代码并单击时,会出现红色矩形(以及一个对话框)。因此,我不确定问题出在哪里???您可能需要查看如何绘制矩形,如中所示。例如,在
paintComponent()
中,将g.fillOval()
替换为g.drawRect()
我不知道如何使图像出现
这显示了如何在
JLabel
中显示图像。您的目标不是很清楚。单击图像的一部分,会显示一个矩形。就是这样。听起来你需要在init上加载图像,然后覆盖绘画代码,在那里,blit当前标记为可见的图像中的矩形。你的意思是类似于他的:有点类似。然而,我想要的只是一个没有填充的简单矩形。单击图像时,矩形应显示在图像顶部。上面的代码已经在运行,但矩形仅用于帧,而不是图像。问题是,我必须将矩形放在图像上:)我在文件中的任何位置都看不到单词image。我认为在paintComponent的某个地方,您需要调用g.drawImage()。