【问题标题】:How do I draw various shapes in Java ? Which library should I use? [closed]如何在 Java 中绘制各种形状?我应该使用哪个库? [关闭]
【发布时间】:2011-01-02 14:40:40
【问题描述】:

我想编写一个程序,它可以绘制我分配给它的任何类型的形状

  1. 圈子
  2. 方形
  3. 矩形

我应该使用哪个库,以及如何在 Java 中使用它?

我是一名 Python 编码员,因此很难应付 Java。

【问题讨论】:

    标签: java swing drawing shapes


    【解决方案1】:

    当然,您可以使用 Swing 做到这一点。为此,您可能需要查看 Java 的 Shape 库。

    或者,您可以简单地覆盖组件的绘制方法,如下所示。

    import javax.swing.*;
    import java.awt.*;
    
    public class ShapeTest extends JFrame{
         public ShapeTest(){
              setSize(400,400);
              setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              setLocationRelativeTo(null);
              setVisible(true);
         }
    
         public static void main(String a[]){
             new ShapeTest();
         }
    
         public void paint(Graphics g){
              g.drawOval(40, 40, 60, 60); //FOR CIRCLE
              g.drawRect(80, 30, 200, 200); // FOR SQUARE
              g.drawRect(200, 100, 100, 200); // FOR RECT
         }
    }
    

    【讨论】:

    • 那么哪个更好? 2d api 还是形状库?
    • 形状库(Java2d)是综合性的。如果您只是要在 java 中显示或玩绘图,那么覆盖 paint() 方法就足够了。如果你能告诉我你的目的,我可以指导你..
    • 优秀。我只想要一个框,我将在其中单击复选框中特定类型的图像上的标记,然后图像就会出现。如果我点击重置,它会消失并给我一个黑屏。
    • 如果这如您所说的那么简单,那么重写paint() 方法就足够了。它非常直截了当。您必须在复选框中添加一个侦听器并在 paint() 方法中编写逻辑来处理何时执行的条件。
    • -1,你永远不应该重写 JFrame 的 paint() 方法,尤其是当你不调用 supper.paint() 时。自定义绘画是通过覆盖像 JPanel 这样的 Swing 组件的 paintComponent() 方法来完成的。此外,您应该始终调用 super.paintComponent()。阅读 Swing 教程中关于自定义绘画 (download.oracle.com/javase/tutorial/uiswing/painting/index.html) 的部分以获取更多信息和示例。
    【解决方案2】:

    Java2D API 有您正在寻找的东西。

    【讨论】:

      【解决方案3】:

      查看Custom Painting Approaches 了解一些想法。 DrawOnComponent 更接近您想要的。需要对其进行更改才能将您的自定义形状对象添加到列表中。

      【讨论】:

        【解决方案4】:

        GraphPanel 是一个简单的对象绘制程序示例,它具有由边连接的可移动、可调整大小、彩色节点。

        【讨论】:

          【解决方案5】:

          Java 2D 是您绘制图形所需的(即绘制彩色矩形、圆形、线条,并为它们设置动画)。

          【讨论】:

            猜你喜欢
            • 2010-11-06
            • 1970-01-01
            • 1970-01-01
            • 2020-09-01
            • 2015-05-28
            • 2013-01-02
            • 2013-03-13
            • 1970-01-01
            相关资源
            最近更新 更多