私はJavaを学ぶのが初めてで、数日間、描画されたオブジェクトをクリックして、g.drawRect(x、x、x、x)などのオブジェクト内にマウスを含める方法を探しました...
以下のコードに出くわしました。オブジェクト内にマウスを含めるために必要なものを学習できるように動作させようとしていますが、動作させることができないようです。
「 MouseListener を Graphic オブジェクトに追加する方法はありますか?」からコードを取得しました。
私は彼らが与えたヒントに従ってそれを機能させようとしましたが、希望はありません:(。
どんな助けでも大歓迎です。
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.Ellipse2D;
import javax.swing.*;
public class Gui3 extends JFrame {
JFrame frame = new JFrame();
MyDrawPanel drawpanel = new MyDrawPanel();
public static void main(String[] args) {
Gui3 gui = new Gui3();
gui.go();
}
public void go() {
frame.getContentPane().add(drawpanel);
// frame.addMouseListener(this);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);
}
}
class MyDrawPanel extends JComponent implements MouseListener {
Ellipse2D oval = new Ellipse2D.Double(70, 70, 100, 100);
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.fillOval(70, 70, 100, 100);
}
@
Override
public void mouseClicked(MouseEvent e) {
if ((e.getButton() == 1) && oval.contains(e.getX(), e.getY())) {
repaint();
JOptionPane.showMessageDialog(null, e.getX() + "\n" + e.getY());
}
}
@
Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@
Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@
Override
public void mousePressed(MouseEvent e) {
}
@
Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public boolean contains(int x, int y) {
return oval.contains(x, y);
}
}