FrameLayout.java
net.minecraft.client.gui.layouts.FrameLayout
信息
- 全限定名:net.minecraft.client.gui.layouts.FrameLayout
- 类型:public class
- 包:net.minecraft.client.gui.layouts
- 源码路径:src/main/java/net/minecraft/client/gui/layouts/FrameLayout.java
- 起始行号:L13
- 继承:AbstractLayout
- 职责:
TODO
字段/常量
-
children- 类型:
List<FrameLayout.ChildContainer> - 修饰符:
private final - 源码定位:
L14 - 说明:
TODO
- 类型:
-
minWidth- 类型:
int - 修饰符:
private - 源码定位:
L15 - 说明:
TODO
- 类型:
-
minHeight- 类型:
int - 修饰符:
private - 源码定位:
L16 - 说明:
TODO
- 类型:
-
defaultChildLayoutSettings- 类型:
LayoutSettings - 修饰符:
private final - 源码定位:
L17 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.client.gui.layouts.FrameLayout.ChildContainer- 类型:
class - 修饰符:
private static - 源码定位:
L115 - 说明:
TODO
- 类型:
构造器
public FrameLayout() @ L19
- 构造器名:FrameLayout
- 源码定位:L19
- 修饰符:public
参数:
- 无
说明:
TODO
public FrameLayout(int minWidth, int minHeight) @ L23
- 构造器名:FrameLayout
- 源码定位:L23
- 修饰符:public
参数:
- minWidth: int
- minHeight: int
说明:
TODO
public FrameLayout(int x, int y, int minWidth, int minHeight) @ L27
- 构造器名:FrameLayout
- 源码定位:L27
- 修饰符:public
参数:
- x: int
- y: int
- minWidth: int
- minHeight: int
说明:
TODO
方法
下面的方法块按源码顺序生成。
public FrameLayout setMinDimensions(int minWidth, int minHeight) @ L32
- 方法名:setMinDimensions
- 源码定位:L32
- 返回类型:FrameLayout
- 修饰符:public
参数:
- minWidth: int
- minHeight: int
说明:
TODO
public FrameLayout setMinHeight(int minHeight) @ L36
- 方法名:setMinHeight
- 源码定位:L36
- 返回类型:FrameLayout
- 修饰符:public
参数:
- minHeight: int
说明:
TODO
public FrameLayout setMinWidth(int minWidth) @ L41
- 方法名:setMinWidth
- 源码定位:L41
- 返回类型:FrameLayout
- 修饰符:public
参数:
- minWidth: int
说明:
TODO
public LayoutSettings newChildLayoutSettings() @ L46
- 方法名:newChildLayoutSettings
- 源码定位:L46
- 返回类型:LayoutSettings
- 修饰符:public
参数:
- 无
说明:
TODO
public LayoutSettings defaultChildLayoutSetting() @ L50
- 方法名:defaultChildLayoutSetting
- 源码定位:L50
- 返回类型:LayoutSettings
- 修饰符:public
参数:
- 无
说明:
TODO
public void arrangeElements() @ L54
- 方法名:arrangeElements
- 源码定位:L54
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public <T extends LayoutElement> T addChild(T child) @ L74
- 方法名:addChild
- 源码定位:L74
- 返回类型:
T - 修饰符:public
参数:
- child: T
说明:
TODO
public <T extends LayoutElement> T addChild(T child, LayoutSettings childLayoutSettings) @ L78
- 方法名:addChild
- 源码定位:L78
- 返回类型:
T - 修饰符:public
参数:
- child: T
- childLayoutSettings: LayoutSettings
说明:
TODO
public <T extends LayoutElement> T addChild(T child, Consumer<LayoutSettings> layoutSettingsAdjustments) @ L83
- 方法名:addChild
- 源码定位:L83
- 返回类型:
T - 修饰符:public
参数:
- child: T
- layoutSettingsAdjustments: Consumer
说明:
TODO
public void visitChildren(Consumer<LayoutElement> layoutElementVisitor) @ L87
- 方法名:visitChildren
- 源码定位:L87
- 返回类型:void
- 修饰符:public
参数:
- layoutElementVisitor: Consumer
说明:
TODO
public static void centerInRectangle(LayoutElement widget, int x, int y, int width, int height) @ L92
- 方法名:centerInRectangle
- 源码定位:L92
- 返回类型:void
- 修饰符:public static
参数:
- widget: LayoutElement
- x: int
- y: int
- width: int
- height: int
说明:
TODO
public static void centerInRectangle(LayoutElement widget, ScreenRectangle rectangle) @ L96
- 方法名:centerInRectangle
- 源码定位:L96
- 返回类型:void
- 修饰符:public static
参数:
- widget: LayoutElement
- rectangle: ScreenRectangle
说明:
TODO
public static void alignInRectangle(LayoutElement widget, ScreenRectangle rectangle, float alignX, float alignY) @ L100
- 方法名:alignInRectangle
- 源码定位:L100
- 返回类型:void
- 修饰符:public static
参数:
- widget: LayoutElement
- rectangle: ScreenRectangle
- alignX: float
- alignY: float
说明:
TODO
public static void alignInRectangle(LayoutElement widget, int x, int y, int width, int height, float alignX, float alignY) @ L104
- 方法名:alignInRectangle
- 源码定位:L104
- 返回类型:void
- 修饰符:public static
参数:
- widget: LayoutElement
- x: int
- y: int
- width: int
- height: int
- alignX: float
- alignY: float
说明:
TODO
public static void alignInDimension(int pos, int length, int widgetLength, Consumer<Integer> setWidgetPos, float align) @ L109
- 方法名:alignInDimension
- 源码定位:L109
- 返回类型:void
- 修饰符:public static
参数:
- pos: int
- length: int
- widgetLength: int
- setWidgetPos: Consumer
- align: float
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class FrameLayout extends AbstractLayout {
private final List<FrameLayout.ChildContainer> children = new ArrayList<>();
private int minWidth;
private int minHeight;
private final LayoutSettings defaultChildLayoutSettings = LayoutSettings.defaults().align(0.5F, 0.5F);
public FrameLayout() {
this(0, 0, 0, 0);
}
public FrameLayout(int minWidth, int minHeight) {
this(0, 0, minWidth, minHeight);
}
public FrameLayout(int x, int y, int minWidth, int minHeight) {
super(x, y, minWidth, minHeight);
this.setMinDimensions(minWidth, minHeight);
}
public FrameLayout setMinDimensions(int minWidth, int minHeight) {
return this.setMinWidth(minWidth).setMinHeight(minHeight);
}
public FrameLayout setMinHeight(int minHeight) {
this.minHeight = minHeight;
return this;
}
public FrameLayout setMinWidth(int minWidth) {
this.minWidth = minWidth;
return this;
}
public LayoutSettings newChildLayoutSettings() {
return this.defaultChildLayoutSettings.copy();
}
public LayoutSettings defaultChildLayoutSetting() {
return this.defaultChildLayoutSettings;
}
@Override
public void arrangeElements() {
super.arrangeElements();
int resultWidth = this.minWidth;
int resultHeight = this.minHeight;
for (FrameLayout.ChildContainer child : this.children) {
resultWidth = Math.max(resultWidth, child.getWidth());
resultHeight = Math.max(resultHeight, child.getHeight());
}
for (FrameLayout.ChildContainer child : this.children) {
child.setX(this.getX(), resultWidth);
child.setY(this.getY(), resultHeight);
}
this.width = resultWidth;
this.height = resultHeight;
}
public <T extends LayoutElement> T addChild(T child) {
return this.addChild(child, this.newChildLayoutSettings());
}
public <T extends LayoutElement> T addChild(T child, LayoutSettings childLayoutSettings) {
this.children.add(new FrameLayout.ChildContainer(child, childLayoutSettings));
return child;
}
public <T extends LayoutElement> T addChild(T child, Consumer<LayoutSettings> layoutSettingsAdjustments) {
return this.addChild(child, Util.make(this.newChildLayoutSettings(), layoutSettingsAdjustments));
}
@Override
public void visitChildren(Consumer<LayoutElement> layoutElementVisitor) {
this.children.forEach(wrapper -> layoutElementVisitor.accept(wrapper.child));
}
public static void centerInRectangle(LayoutElement widget, int x, int y, int width, int height) {
alignInRectangle(widget, x, y, width, height, 0.5F, 0.5F);
}
public static void centerInRectangle(LayoutElement widget, ScreenRectangle rectangle) {
centerInRectangle(widget, rectangle.position().x(), rectangle.position().y(), rectangle.width(), rectangle.height());
}
public static void alignInRectangle(LayoutElement widget, ScreenRectangle rectangle, float alignX, float alignY) {
alignInRectangle(widget, rectangle.left(), rectangle.top(), rectangle.width(), rectangle.height(), alignX, alignY);
}
public static void alignInRectangle(LayoutElement widget, int x, int y, int width, int height, float alignX, float alignY) {
alignInDimension(x, width, widget.getWidth(), widget::setX, alignX);
alignInDimension(y, height, widget.getHeight(), widget::setY, alignY);
}
public static void alignInDimension(int pos, int length, int widgetLength, Consumer<Integer> setWidgetPos, float align) {
int offset = (int)Mth.lerp(align, 0.0F, (float)(length - widgetLength));
setWidgetPos.accept(pos + offset);
}
@OnlyIn(Dist.CLIENT)
private static class ChildContainer extends AbstractLayout.AbstractChildWrapper {
protected ChildContainer(LayoutElement child, LayoutSettings layoutSettings) {
super(child, layoutSettings);
}
}
}引用的其他类
-
- 引用位置:
继承
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置:
-
- 引用位置:
参数/字段/方法调用/返回值 - 关联成员:
LayoutSettings.defaults()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Mth.lerp()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Util.make()
- 引用位置: