Я немного застрял на своей домашней работе в 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);
}
}
Это звучит более правильно для меня. У вас есть примеры или ссылки? Я больше посмотрю на код и посмотрю, смогу ли я где-нибудь с ним поработать. Спасибо за предложение! – user3018925