java - 几何函数索引

标签 java swing graphics indexing hashmap

我正在制作一种基于命令的应用程序来绘制几何图形。因此,如果用户输入类似 RECT 100, 50, 200, 120 的内容,我会在绘图面板的指定位置绘制一个矩形。

为此,我需要将 RECT 映射到 g.drawRect(100, 50, 200, 120); 以及所有类似的函数来绘制几何图形。

我会用hash map做映射,但我不知道如何在java中构建函数数组。不过在 C++ 中我已经这样做了。

键可以是'RECT',值是索引的偏移量。

请告诉我如何索引这些函数。还是有更好的方法来解决主要问题?

最佳答案

Java 中没有函数指针,您需要通过继承和/或接口(interface)来实现。这是一个例子:

interface Shape {
    void draw(int[] data);
}

class Polygon implements Shape {
    public void draw(int[] data) {
        // Draw polygon using points data[i], data[i+1] for points
    }
}

class Circle implements Shape {
     public void draw(int[] data) {
         // Draw circle using data[0], data[1] for the center, and data[2] for radius
     }
}

在主程序的构造函数或静态初始化器中:

Map<String,Shape> shapes = new HashMap<String,Shape>();
shapes.put("POLY", new Polygon());
shapes.put("CIRC", new Circle());

在你的绘图代码中:

shapes.get("CIRC").draw(new int[] {100, 100, 50});

关于java - 几何函数索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8722491/

相关文章:

opengl - GL_R16 和 GL_R16UI 之间的区别?

java - Java 中的重力模拟器

java - 方法委托(delegate)和添加字段

java - 通过提供InputStream getter 来延迟访问InputStream

java - 如果弹出基于 jTable 对象的对话框,如何放置条件?

java - Swing 中的 NL(荷兰语)语言环境似乎不起作用

Java:JOptionPane inputDialog 中的可编辑 JCombobox?

java - 当文本超出窗口宽度时,JScrollbar 不会激活

java - logback.xml中是否有像SizeAndTimeBasedTriggeringPolicy和FixedWindowRollingPolicy这样的触发策略?

java - 与actionListener静态类冲突