Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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中创建更高级的元素:Swing或images_Java_Swing_User Interface - Fatal编程技术网

在Java中创建更高级的元素:Swing或images

在Java中创建更高级的元素:Swing或images,java,swing,user-interface,Java,Swing,User Interface,使用Swing在Java中创建GUI时,应该如何创建更高级的“元素”?例如,考虑: 根据当前页面或状态,可以使用~10个图像完成此操作。我也确信可以通过编程实现这一点,然而,考虑到我过去使用Swing的经验,我也确信对于一些相对简单的东西来说,这将是大量的代码。特别是考虑到这可以在CSS中用最多40行代码来完成 在这种情况下,是否有其他方法来创建此“元素”?如果没有;首选什么:图像还是Swing 如果您真的必须使用Java(正如您所说,使用CSS实现类似的东西要容易得多),我认为最好使用图像

使用Swing在Java中创建GUI时,应该如何创建更高级的“元素”?例如,考虑:

根据当前页面或状态,可以使用~10个图像完成此操作。我也确信可以通过编程实现这一点,然而,考虑到我过去使用Swing的经验,我也确信对于一些相对简单的东西来说,这将是大量的代码。特别是考虑到这可以在CSS中用最多40行代码来完成


在这种情况下,是否有其他方法来创建此“元素”?如果没有;首选什么:图像还是Swing

如果您真的必须使用Java(正如您所说,使用CSS实现类似的东西要容易得多),我认为最好使用图像

生成图形元素的代码是可以实现的,但是除了很难实现之外,它是不可维护的:任何任意简单的设计更改都可能需要很长时间才能实现

与此相反,图像可以很容易地被替换,有时甚至不需要重新编译应用程序(如果它们保持相同的大小、格式等)


性能方面,使用swing或其他库可以使应用程序的大小增加几千字节,而使用映像可能会使应用程序在资源有限(移动应用程序、旧计算机)的情况下响应更快。

这取决于需求

如果您希望它具有可伸缩性,那么Swing graphics是您的最佳选择。如果没有,图像应该是好的。如果您希望它是可重用的(对于n个可能的连接),那么Swing graphics是一个更好的选择。如果您的连接数量有限且永远不会更改,则图像将很好

你还需要考虑改变外表和感觉是多么容易。创建图像需要时间,但渲染器提供了更大的灵活性

对我来说,我通常会将两者结合使用。呈现文本相对简单,但是像复选标记这样的东西需要更多的时间来创建

你还必须考虑如果你想产生一个单独的图像并渲染它,它就使用每个部分的单独的组件。

我也会考虑导航之类的东西。您需要它吗?如果需要,使用带有
mouseListener
的组件或将视图转换为模型以确定发生了什么更容易

  • 您可以使用合适的Unicode字形,例如或任何数字

    • 作为标签的文本,如图所示

    • 作为
      字形向量
      ,已提到

    • 作为渲染图像,如图所示

  • 通过实现
    图标
    界面,您可以获得一个着色的抗锯齿圆;这就是一个例子

  • 您可以使用
    BasciStroke
    获得各种实线和虚线,如图所示

  • 在库存中,
    FlowLayout
    可能足够了


  • 防火墙可以阻止我们中的许多人看到图像。你能更好地描述一下你想做什么吗?@HovercraftFullOfEels我正在开发一个Java应用程序,它将需要非标准元素,类似于问题中提供的图像。我不确定我是应该使用Swing(或其他东西),还是仅仅使用大量图像。同样,由于防火墙的原因,我看不到您提供的图像。祝你好运!哦,对不起,我误解了你。图像是一个表单状态/进度跟踪器,认为“第一步是活动页面,彩色[check]--第二步未完成,变灰-第三步未完成,变灰”以及描述每个步骤的标签。不过,这只是一个例子。我认为一个好的混合解决方案可能是将矢量图形提供给Java代码,但我不知道有哪个库可以做到这一点。首先,感谢您的回答和想法!遗憾的是,我不得不使用Java,因为它将是一个桌面应用程序。幸运的是,应用程序的总大小不是太大的问题,因为它只会部署一次(不是ev.计数更新)。更多,包括带圆圈的数字。完美的答案,谢谢!没过多久,在你的回答的帮助下,我创造了一些没有太大区别的东西:(有支持边界)。现在我只需要弄清楚如何在较长的文本(如最后一项)上使行重叠。再次感谢!你可以添加换行符。聪明,没想到![现在它确实把圆圈推高了,而不是文本。我尝试使用
    cons.anchor=GridBagConstraints.SOUTH
    ,但没有成功。你可能会看到它是否有效。感谢你的回答,它给了我很多想法;非常感谢!我希望有更多的时间一起举出一个例子