그래서 Path2D 원을 JPanel에 그립니다. 사용자가 원의 오른쪽 하단을 클릭하여 끌 때 원의 크기를 조정하려고합니다. 그래서, 내가 원했던 것은 동그라미의 바깥 쪽 오른쪽 하단이 아닌 오른쪽 에있을 때를 감지하는 것입니다. 주위의 경계선의 오른쪽 하단이 아닙니다.JPanel에서 Path2D 원의 바깥 쪽 가장자리를 감지 함
내가 사각형 (도로 getBounds 사용)하지만 원에 도로 getBounds()를 사용하는 경우, 그것은을 반환하여이 작업을 수행하는 방법을 알고 : 기본적으로,이 같은 작업을 수행하는 방법을 강구해야 실제 원의 범위가 아니라 원 주위를 사각형으로 표시합니다. 이 일을 어떻게 얻을 수 있는지에 대한 아이디어가 있습니까? 감사! 여기
내 프로그램의 단축, 실행 가능한 버전입니다 :import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Panel;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Path2D;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Editor {
public static void main(String[] args) {
JFrame frame = new UMLWindow();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(30, 30, 1000, 700);
frame.getContentPane().setBackground(Color.white);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
class UMLWindow extends JFrame {
Shapes shapeList = new Shapes();
Panel panel;
private static final long serialVersionUID = 1L;
public UMLWindow() {
addMenus();
panel = new Panel();
}
public void addMenus() {
getContentPane().add(shapeList);
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
shapeList.addCircle(100, 100);
}
}
// Shapes class, used to draw the shapes on the panel
// as well as implements the MouseListener for dragging
class Shapes extends JPanel {
private static final long serialVersionUID = 1L;
private List<Path2D> shapes = new ArrayList<Path2D>();
int currentIndex;
public Shapes() {
MyMouseAdapter myMouseAdapter = new MyMouseAdapter();
addMouseListener(myMouseAdapter);
addMouseMotionListener(myMouseAdapter);
}
public void addCircle(int width, int height) {
Path2D circ = new Path2D.Double();
circ.append(new Ellipse2D.Double(442, 269, width, height), true);
shapes.add(circ);
repaint();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setStroke(new BasicStroke(2));
for (Path2D shape : shapes) {
g2.draw(shape);
}
}
class MyMouseAdapter extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseDragged(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
}
}
아마도 삼각뿔을 사용하고 싶을 수도 있지만 PathIterator @ – MadProgrammer
@MadProgrammer 나는 trig을 사용하지 말라고 말하지 않았 으면 좋겠다. – Harry