java - 我应该如何在java中为我的绘画应用程序分割连接线
问题描述
我是在java中使用paint和lines的新手,如果答案很明显,我很抱歉。无论如何,我希望我的线条流畅,这就是为什么我有“圆圈”加入来制作一条带圆角的线条,问题是它无法识别鼠标何时释放,所以当我尝试写另一个字母将碎石上的两个点连接起来。对我的应用程序进行编程以在不连接的情况下获得流畅线条的最佳方法是什么?
package pac;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.geom.Line2D;
import java.util.ArrayList;
import javax.swing.*;
public class Frame extends JPanel{
private final ArrayList<Point> point = new ArrayList<>();
public Frame() {
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent event) {
point.add(event.getPoint());
repaint();
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent event) {
point.add(event.getPoint());
repaint();
}
});
}
public void paintComponent(Graphics g) {
super.paintComponents(g);
Graphics2D g2 = (Graphics2D) g;
g2.setColor(new Color(0, 0, 128));
g2.setStroke(new BasicStroke(15f,
BasicStroke.CAP_ROUND,
BasicStroke.JOIN_ROUND));
// if(!mouserelased) {
for (int i = 1; i < point.size(); i++)
g2.draw(new Line2D.Float(point.get(i-1), point.get(i)));
// }
}
public static void main(String[] args) {
JFrame f = new JFrame();
f.add(new Frame());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(800, 600);
f.setVisible(true);
}
}
解决方案
推荐阅读
- python - 未知选项 yscrollcommand
- android-studio - 为什么我的 AVD Manager 上的“停止”模拟器选项是灰色的?
- business-objects - 基于多个合并维度的值
- javascript - Javascript 经典脚本与模块范围
- c# - 不能将 int 隐式转换为 bool
- javascript - 仅更改深层对象中的一个值
- python - Python:德国手机号码的正则表达式
- r - 如何在 R 中对数据进行时间降级(按组降级)?
- mysql - 如何将加载数据文件中的详细信息存储在变量中
- flutter - 在 Flutter 中使用 AccelerometerEvent 检测设备方向