Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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组件_Java_Swing_Jcomponent - Fatal编程技术网

Java 如何创建自定义Swing组件

Java 如何创建自定义Swing组件,java,swing,jcomponent,Java,Swing,Jcomponent,我一直想用Java创建自定义组件,或者自定义现有组件,但我的搜索从未得到任何有用的结果。因此我决定询问StackOverflow社区: 在哪里可以找到有关定制Java GUI组件的一般信息? 当我指的是定制时,我指的不是改变颜色、字体等。我指的是真正的定制它们。以下是两个实体模型示例组件: 注释 我开始这个问题主要是为了找到如何创建上述两个自定义组件。但后来我意识到,破解swing组件并不是一个普遍的问题。所以我认为最好有一份资源清单 如果您想知道实体模型中的两个组件是如何工作的,请看下面的内

我一直想用Java创建自定义组件,或者自定义现有组件,但我的搜索从未得到任何有用的结果。因此我决定询问StackOverflow社区:

在哪里可以找到有关定制Java GUI组件的一般信息?

当我指的是定制时,我指的不是改变颜色、字体等。我指的是真正的定制它们。以下是两个实体模型示例组件:

注释
我开始这个问题主要是为了找到如何创建上述两个自定义组件。但后来我意识到,破解swing组件并不是一个普遍的问题。所以我认为最好有一份资源清单

如果您想知道实体模型中的两个组件是如何工作的,请看下面的内容:

自定义的JScrollPane,每个方向有两个滚动条。每个滚动条的作用可能不同。例如,外部视图可以正常滚动,而内部视图则以更相似的方式移动视图。实际上,我从谷歌集团那里得到了一个有效的(!)答案,但那只是代码

第二个是自定义JComboBox,当弹出列表展开时,它的末尾有一个JComponent。这可以是任何东西,从带有图标的简单JLabel到以某种方式操纵列表的JButton


但这个问题不是关于那些特定的组件。这是关于查找资源(网站、书籍、文章等)以学习如何创建它们的

这是一个非常开放的问题,简单的回答是,您可以将其子类化或子类化,并添加所需的功能。显然,这取决于你想做什么,难度可能会有所不同。对于初学者,我建议您阅读Sun的,其中有关于如何使用和的示例。一旦你通读了这些内容并进行了实验,你可能会有更具体的问题,让人们更容易提供经过深思熟虑的答案


如果模型中的两个组件都是您想要实现的,那么让我们更好地了解您希望它们如何工作将得到更好的答案。

JDK是开源的。要理解如何编写Swing组件,没有比查看Swing组件的源代码更好的地方了。通常,在创建自定义组件时,您会对以下一项或多项感兴趣:{交互语义、视觉表示、组合结构}

从最简单的案例开始:

无源元件:
JLabel

交互式组件:
JButton

JLabel
将演示
JComponent
对组件自定义绘图的基本扩展;在本例中,它将绘制“文本”字符串值作为其表示形式


JButton
除了绘制组件外,还将演示用于用户交互的裸体扩展。

阅读。IMHO是一本有效使用swing的基本书籍。

是一本关于这个主题的优秀、可读性很强的书。与其创建全新的Swing组件,不如说是改进Swing组件的外观和感觉,但它确实深入了Swing的本质,并提供了许多实际示例。

这篇文章应该非常有用。它包括复制一个既有离散步骤又有连续范围的Windows滑块控件。

我个人认为上述答案过于笼统或模糊。此外,正如我所做的那样,不可避免地会有人碰到这条线索,我不妨提供我的发现:

  • ,及


希望这能有所帮助……

我已经阅读了Java教程(在Swing方面也一直如此),但它并没有达到我需要的深度。你能更具体地解释一下你需要什么吗?你是想知道如何具体实现问题中模拟的功能,还是想让问题更一般化?是的,我读过这本书。非常好的书,但是,正如你所说,它主要是关于改善外观和感觉。我只是注意到sceenshot说“jbomponent”…:PA在阅读Swing代码时,需要记住几个注意事项:其中有很多向后兼容的代码;大多数实际的图形代码都在UI类中;Swing类已经“进化”,不一定代表最佳实践。组件代码的网址此链接已过时。虽然实际页面仍然存在,但您会发现页面中的图像和链接都丢失了。有人有更新的链接吗?此外,一般来说,我们将链接中的相关内容放在答案中,正是针对这种链接过时的情况。