Я немного застрял на своей домашней работе по java на этой неделе. Задача звучит так: «Напишите программу, которая позволяет пользователю щелкать по панели для динамического создания точек. Изначально панель пуста. Когда на панели две или более точек, подсвечивайте пару ближайших точек. создается, выделяется новая пара ближайших точек. Отобразите точки с помощью маленьких кружков и выделите точки с помощью закрашенных кружков. (Совет: сохраните точки в ArrayList)"
В приведенном ниже коде я попытался создать ArrayList класса CircleMouse, но я не знаю, является ли это «правильным» способом? Кроме того, как отображать круги на панели, когда они находятся в ArrayList?
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
import javax.swing.*;
class ClosestPairOfPoints extends JFrame {
/** FRIE VARIABLER **/
int x, y;
/*** ARRAYLIST MED ALLE SIRKLENE ***/
public ArrayList<CircleMouse> arrCircle = new ArrayList <CircleMouse>();
public ClosestPairOfPoints() {
/*** PANEL FOR Å HOLDE PÅ SIRKLENE ***/
JPanel circlePanel = new JPanel();
circlePanel.setSize(500, 400);
circlePanel.setLocation(0, 0);
circlePanel.setBackground(Color.PINK);
/*** HENTER CIRCLEMOUSE KLASSEN INN ***/
CircleMouse circleMouse = new CircleMouse();
circlePanel.addMouseListener(circleMouse);
circlePanel.addMouseMotionListener(circleMouse);
/*** LEGGER PANELET INN I FRAMEN ***/
add(circlePanel);
}
/*** CIRCLEMOTION KLASSEN ***/
class CircleMouse extends JPanel implements MouseListener, MouseMotionListener {
public void paintComponent (Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLUE);
g.drawOval(x, y, 15, 15);
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
x = e.getX();
y = e.getY();
repaint();
}
@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) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
}
public static void main(String[] args) {
ClosestPairOfPoints frame = new ClosestPairOfPoints();
frame.setTitle("Øving 1 - Oppgave 1: Closest Pair Of Points");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 400);
frame.setVisible(true);
}
}