自定义组件 1.20.4
学习如何给您的界面创建自定义组件。
WARNING
本页面适用于 1.20.4 版本。 针对旧版本的文档可能不完整。
组件是一类容器化的界面元素,它们可以被添加到界面上供玩家交互,交互方式包括鼠标点击、键盘输入等。
创建组件
有很多种创建组件的方式,最常用的是继承自 AbstractWidget。 这个类提供了许多实用功能,比如控制组件的尺寸和位置,以及接收用户输入事件。事实上这些功能由 Renderable、GuiEventListener、NarrationSupplier、NarratableEntry 接口规定:
Renderable用于指定渲染逻辑。当一个组件实现此接口时,您可以通过Screen#addDrawableChild将组件对象添加至界面中。GuiEventListener用于接收用户输入事件,比如鼠标点击、键盘输入等。NarrationSupplier用于提供无障碍信息,无障碍功能(如复述)通过此接口访问组件内容。NarratableEntry用于聚焦组件,实现此接口后组件可以由Tab键选中,这也是一种无障碍功能。
java
No lines matched.1
将组件添加至界面
如同其他组件,您需要使用 Screen#addDrawableChild 来将组件添加到界面中。 请确保这一步在 Screen#init 方法中完成。
java
No lines matched.1

用户输入事件
您可以自定义用户输入事件的处理逻辑,比如覆写 mouseClicked、afterMouseAction、keyPressed 等方法。
举个例子,您可以使用 ClickableWidget#isHovered 方法来使组件在鼠标悬停时变色。
java
No lines matched.1


