1

基本上我加载了一个图像,当我单击图像的一部分时,会出现一个矩形(没有填充)。如果我再次单击图像的另一部分,该矩形将再次出现。每次单击都会出现相同的矩形。

到目前为止我有这个代码,现在我不知道如何让图像出现。我的文件目录中的图像。我已经编写了从我的文件目录中获取图像的代码。

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);
    }
}
4

2 回答 2

2

您可能希望查看在Glass Pane上绘制矩形,如图所示GlassPaneDemo。例如,在 中paintComponent(),替换g.fillOval()g.drawRect()

我不知道如何使图像出现。

示例说明如何在JLabel.

于 2011-11-20T17:47:51.087 回答
1

this.x 和 this.y 指的是 JPanel 的 x 和 y,而不是您要绘制的矩形。您需要创建两个附加字段,rectX 和 rectY。这些在 mouseClicked 中设置并由paintComponent() 使用。

编辑

对不起,我的错。我现在很困惑。您确实声明了 x 和 y。这些仍应重命名,因为它们可能与 Component 中定义的 x 和 y 混淆,但它们不是问题。当我运行您的代码并单击时,会出现红色矩形(以及一个对话框)。所以我不确定是什么问题???

于 2011-11-20T15:39:45.307 回答