java - 不使用 Lines2D 的橡皮筋
问题描述
我正在尝试做橡皮筋,让我再解释一下,每次我画一条线并画另一条线时,它都会清除面板并且从不显示第一个绘制的线,我想保存所有绘制的线而不使用Lines2D
我想要的使用ArrayList
一个为first
点,第二个为second
点。
这是我的代码:
package rubberlines;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class RubberLinesPanel extends JPanel {
private Point point1 = null, point2 = null;
private ArrayList<Point> pt1 = new ArrayList<Point>();
private ArrayList<Point> pt2 = new ArrayList<Point>();
// private ArrayList<Point> pt3 = new ArrayList<Point>();
RubberLinesPanel(){
LineListener listener = new LineListener();
addMouseListener(listener);
addMouseMotionListener(listener);
setBackground(Color.black);
}
public void paintComponent(Graphics page){
super.paintComponent(page);
page.setColor(Color.green);
for(int i=0; i<pt1.size(); i++){
if(point1 != null && point2 != null){
page.drawLine(point1.x, point1.y, point2.x, point2.y);
}
}
}
private class LineListener implements MouseListener, MouseMotionListener{
public void mousePressed(MouseEvent event){
point1 = event.getPoint();
pt1.add(point1);
}
public void mouseDragged(MouseEvent event){
// point2 = event.getPoint();
// repaint();
}
public void mouseClicked(MouseEvent event){}
public void mouseReleased(MouseEvent event){
point2 = event.getPoint();
pt2.add(point2);
repaint();
// for(int i=0; i<pt2.size(); i++){
// pt2.get(i);
// }
}
public void mouseEntered(MouseEvent event){}
public void mouseExited(MouseEvent event){}
public void mouseMoved(MouseEvent event){}
}
}
解决方案
我想将 ArrayList 用于第一点,将第二点用于第二点。
那么get(...)
在你尝试在两点之间画一条线之前,你需要实际使用该方法从 ArrayList 中获取每个点。
就像是:
for(int i = 0; i < pt1.size(); i++)
{
Point point1 = pt1.get(i);
Point point2 = pt2.get(i);
if(point1 != null && point2 != null)
{
page.drawLine(point1.x, point1.y, point2.x, point2.y);
}
}
推荐阅读
- javascript - 如何解决 NodeJS 中的“TypeError:将循环结构转换为 JSON”
- ios - iOS中的进程间通信
- css - 颜色值突出显示
- c# - 无法在 ASP.NET 的 page_load 中使用甜蜜警报
- linux - 如何根据日志消息重新启动脚本
- android - 为什么在Android Android Studio的布局中删除按钮后,它仍然可以看到它?
- java - 如何在每个子枚举中实现具有不同第一个参数的功能接口
- heroku - Webpacker:编译失败:错误命令“webpack”未找到
- python - 为什么 html 会跳过我的变量,我该如何修复它?
- python-3.x - pyarrow PlasmaStoreFull 的导入问题