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

に示すように、The 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の2つの追加フィールドを作成する必要があります。これらはmouseClickedで設定され、paintComponent()によって使用されます。

編集

すみません、悪いです。私は今混乱しています。xとyを宣言します。これらは、コンポーネントで定義されたxおよびyと混同される可能性があるため、名前を変更する必要がありますが、問題ではありません。コードを実行してクリックすると、赤い長方形が(ダイアログとともに)表示されます。だから私は何が問題なのかわかりません???

于 2011-11-20T15:39:45.307 に答える