基本上我加载了一个图像,当我点击图像的一部分时,会出现一个矩形(没有填充)。如果我再次单击图像的另一部分,该矩形将再次出现。每次单击,都会出现相同的矩形。
到目前为止,我有这段代码,现在我不知道如何使图像出现。我的文件目录中的图像。我已经制作了代码来从我的文件目录中获取图像。
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);
}
}
答案 0 :(得分:2)
您可能需要查看在The Glass Pane上绘制矩形,如GlassPaneDemo
所示。例如,在paintComponent()
中,将g.fillOval()
替换为g.drawRect()
。
我不知道如何让图像出现。
此example显示了如何在JLabel
中显示图片。
答案 1 :(得分:1)
this.x和this.y指的是你的JPanel的x和y,而不是你想要绘制的矩形。您需要创建两个额外的字段,rectX和rectY。这些在mouseClicked中设置并由paintComponent()使用。
修改
对不起,我很难过。我现在很困惑。你确实声明了一个x和y。这些仍然应该被重命名,因为它们可能与Component中定义的x和y混淆,但它们不是问题。当我运行代码并单击时,会出现红色矩形(以及对话框)。所以我不确定是什么问题???