Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于在Java中将JLabel添加到矩形的建议_Java_Swing - Fatal编程技术网

关于在Java中将JLabel添加到矩形的建议

关于在Java中将JLabel添加到矩形的建议,java,swing,Java,Swing,我们正在制作一个UML工具,作为本科项目的一部分。我们处理屏幕上绘制的属性的方式如下: 每件事物都绘制在一个JPanel上,该JPanel上绘制了一个网格 此JPanel的引用被传递到要绘制的项,例如类或接口 然后我们简单地绘制形状(通过drawRect),当添加属性时,我们简单地通过使用第2点中传递的引用在JPanel上添加表示它们的JLabel。但对用户而言,它们似乎是在形状上绘制的。 我的问题是,我们的方法正确吗?还是有更好的方法来完成这项任务?我附上一张图表,说明我们有什么?或者使用JL

我们正在制作一个UML工具,作为本科项目的一部分。我们处理屏幕上绘制的属性的方式如下:

  • 每件事物都绘制在一个JPanel上,该JPanel上绘制了一个网格
  • 此JPanel的引用被传递到要绘制的项,例如类或接口
  • 然后我们简单地绘制形状(通过drawRect),当添加属性时,我们简单地通过使用第2点中传递的引用在JPanel上添加表示它们的JLabel。但对用户而言,它们似乎是在形状上绘制的。
    我的问题是,我们的方法正确吗?还是有更好的方法来完成这项任务?我附上一张图表,说明我们有什么?或者使用JLabel完成此任务是一个坏主意?JPanel的引用仅传递给draw JLabel。否则不需要它。

  • 您的意思似乎是,JLabels持有属性被放置在具有网格的大JPanel上

    我同意评论者的说法,这是主观的,但我有另一个选择,我认为这是更好的,值得一个答案。在整个图形上有一个矩形空间,表示一个项目——在本例中是一个对象。我认为,无论是现在还是将来,您都可能希望使用该项进行操作,如果您单独绘制该项的组件,您将承诺在自己的代码中保持其所有子项


    相反,我建议使用一个表示对象的JPanel,并将所有属性或任何其他内容放置在对象JPanel的矩形内,不是网格的JPanel。

    这是一个相当主观的问题,因为有多种方法可以做到这一点,并且可能没有一种客观的方法来确定哪种方法是最好的。我的感觉是,一旦你开始在JPanel上绘图,你就会继续在JPanel上绘图。换句话说,使用drawText方法而不是JLabel。正如rcook在回答中所说,您希望将一个对象的所有绘图代码保存在一起。可能我们将在上下文中使用JComponent作为绘图元素的父类来解决上述问题。同意你的解释和想法。