Я решаю упражнение, чтобы создать ближайшую пару точек. Первый satge, который я делаю, пытается сделать точки (cricles) с помощью мыши. Но я не получил никакой реакции с левой кнопкой (всего один круг в (0,0)), остальные кнопки 2 и 3 работают нормально. Я застрял в том, почему и как это разрешить? Любой намек или помощь ценятся.Почему я не могу сделать круги с помощью мыши?
Вот код:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ClosestPairOfPoints extends JFrame {
// Create a canvas
private Circle canvas = new Circle();
public ClosestPairOfPoints() {
// Create a panel
JPanel p = new JPanel();
// Add canvas and panel
add(canvas, BorderLayout.CENTER);
// add(p);
canvas.addMouseListener(new MouseAdapter() {
@Override
// Handle mouse clicked event
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1)
canvas.createCircle();
else if (e.getButton() == MouseEvent.BUTTON2)
System.out.println("Try again with the left button");
else if (e.getButton() == MouseEvent.BUTTON3)
System.out.println("Try again with the left button");
}
});
}
public static void main(String[] args) {
JFrame frame = new ClosestPairOfPoints();
frame.setTitle("Closest pair of Ppoints");
frame.setLocationRelativeTo(null); // Center the frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setVisible(true);
}
static class Circle extends JPanel { // Inner class
private int x;
private int y;
private int radius = 10; // Default circle radius
// Create a circle
public void createCircle() {
}
// paint the component
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawOval(x, y, radius, radius);
}
}
}
Откуда вы знаете, что не получаете ответа от «левой кнопки»? Вам нечего сказать? – MadProgrammer
Ваш метод 'createCircle()' ничего не делает. –
Когда я выполняю код, я получаю круг в (0,0), и когда я нажимаю на B2 или B3, я получаю сообщение, но ничего не получаю от B1. Я застрял в том, как должен быть createCircle()? Мне нужен только намек. Я не знаю .. Просто – Kurt16