java - JPanel 内自由绘图

标签 java swing drawing jpanel paint

我是 Java 新手。 我想创建一个程序,在其中我需要通过拖动鼠标在JPanel上自由绘图。我了解了绘制功能的基础知识并能够实现这一点。

public class DrawLine extends JPanel {  
public void paint(Graphics g)
{

g.drawLine(0, 0, 50, 50);   
}
public static void main(String[] args) {

    SwingUtilities.invokeLater(new Runnable(){
        public void run()
        {
            JFrame frame=new JFrame("Top Level Demo");
            frame.setSize(300, 250);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            JPanel myPanel=new JPanel();
            myPanel.setLayout(null);
            frame.add(myPanel);
            frame.add(new DrawLine());
            frame.setVisible(true);

        }});
    }}

但这会生成这样的输出,其中直线由坐标确定。 enter image description here

请有人帮我在 JPanel 中实现自由绘图。

最佳答案

重写JPanel的paintComponent()而不是paint()方法。

创建要在paintComponent()中使用的Point列表。

循环迭代列表,并为列表中的每一对点调用

g.drawLine(currentPoint.x,currentPoint.y, nextPoint.x,nextPoint.y); 

添加拖动监听以在列表中存储拖动点。

关于java - JPanel 内自由绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19786089/

相关文章:

java - 竞争条件和 clojure 原子

java - Java Servlet 中的 session

java - JScrollPane 达到滚动限制事件

java - 如何从数据库中获取值?

java - 如何避免多边形重叠

iOS 通过手指滑动绘制人字形图案

java - 在java中制作一个可播放的jslider

java - 在知道数组长度之前,如何等待初始化数组?

java - 控制台输出到框架、文本区域?

image - 在 node.js 中绘制图像