UE4 SizeBox的妙用

SizeBox是一个很有意思的控件,下边通过创建一个自变化宽高的文本输入框来举例讲述它的作用。当然自变化宽高的文本框可以用TextBox(Multi-line)即可实现(C++中为UMultiLineEditableTextBox类型),这里只是举例说明而已

   

   

   

   

1.文字为EditTextBox(Multi-line),后边黑色背景为Image控件,把Image控件放进SizeBox控件中,勾选SizeBox的SizeToContent选项,选择WidthOverride和HeightOverride选项。

 

2. 类似SizeBox,将EditTextBox(Multi-line)也勾选SizeToContent选项,关闭AutoWrapText(自动换行),设置WrapTextAt(在何处换行)为你需要换行的最大长度,比如300。

 

3. 给EditTextBox(Multi-line)的OnTextChanged和OnTextCommitted绑定事件,在事件中获取EidtTextBox的大小(GetDesiredSize),重写SizeBox的宽高(SetWidthOverride和SetHeightOverride)。

//本文为CSDN博主执手画眉弯原创,未经允许不得转载!

附SizeBox说明:

/**

* A widget that allows you to specify the size it reports to have and desire. Not all widgets report a desired size

* that you actually desire. Wrapping them in a SizeBox lets you have the Size Box force them to be a particular size.

*

* * Single Child

* * Fixed Size

*/

 

 

 

好的,下面是一份简单的Java Swing代码示例,实现了您所要求的图形界面: ```java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class FontChooser extends JFrame implements ActionListener { private JLabel textLabel; private JComboBox<String> fontBox; private JComboBox<Integer> sizeBox; private JCheckBox boldBox; private JCheckBox italicBox; private JButton closeButton; public FontChooser() { super("Font Chooser"); // create components textLabel = new JLabel("Font Preview"); fontBox = new JComboBox<>(new String[] {"Serif", "SansSerif", "Monospaced"}); sizeBox = new JComboBox<>(new Integer[] {12, 14, 16, 18, 20}); boldBox = new JCheckBox("Bold"); italicBox = new JCheckBox("Italic"); closeButton = new JButton("Close"); // set default font textLabel.setFont(new Font("Serif", Font.PLAIN, 12)); // add components to panel JPanel panel = new JPanel(new GridLayout(5, 1)); panel.add(textLabel); panel.add(fontBox); panel.add(sizeBox); panel.add(boldBox); panel.add(italicBox); // add event listeners fontBox.addActionListener(this); sizeBox.addActionListener(this); boldBox.addActionListener(this); italicBox.addActionListener(this); closeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose(); } }); // add panel to frame add(panel, BorderLayout.CENTER); add(closeButton, BorderLayout.SOUTH); // set frame properties setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300, 200); setLocationRelativeTo(null); setVisible(true); } public void actionPerformed(ActionEvent e) { String fontName = (String) fontBox.getSelectedItem(); int fontSize = (int) sizeBox.getSelectedItem(); int fontStyle = (boldBox.isSelected() ? Font.BOLD : 0) | (italicBox.isSelected() ? Font.ITALIC : 0); textLabel.setFont(new Font(fontName, fontStyle, fontSize)); } public static void main(String[] args) { new FontChooser(); } } ``` 这个程序创建了一个名为 "Font Chooser" 的窗口,包含一个文本标签、一个字体下拉框、一个字号下拉框、一个粗体复选框、一个斜体复选框和一个关闭按钮。默认情况下,文本标签的字体为 "Serif"、大小为 12、无样式效果。当用户选择不同的字体、字号、粗体或斜体选项时,文本标签的字体会相应地改变。单击关闭按钮可将窗口关闭。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值