TextField中运用setTextFormat()方法和defaultTextFormat的区别

备忘下:

在使用TextFormat类来对TextField文本域进行格式化处理的时候,经常用到两个方法,一个是通过通过TextField类的实例方法setTextFormat()进行设置,另外一个是通过TextField类的属性defaultTextFormat进行设置。

他们的区别主要在两个地方,

1,setTextFormat()方法不适用于后来分配的文本,setTextFormat()方法只可以在文本已经被添加到文本域之后用于格式化一个文本域,也就是必须先给TextField的实例属性text分配值,才能进行格式化;如果运用了setTextFormat()格式化文本之后,text属性的值在被重新分配(重新赋值),那么,关联于原来文本域的任何自定义格式将被移除。然而,如果通过设置TextField的属性defaultTextFormat(文本域默认格式)来进行格式化,则需要先进行设置默认格式,即为defaultTextFormat赋值,再进行TextField类的text属性复制,在此之后的text属性重新赋值不会移除原来defaultTextFormat定义的格式。比如下面两个实例

在flash中新建一个AS3的fla文档,在帧上编写代码:

(第一部分代码)

var myText:TextField=new TextField();
myText.width=200;
myText.wordWrap=true;
var myTextFormat:TextFormat=new TextFormat();
myTextFormat.bold=true;
myTextFormat.size=18;
myText.text="Hellow World";//注意位置
myText.setTextFormat(myTextFormat);//注意位置
myText.appendText(" Hi World");
addChild(myText);

在上面的代码中,注意红色标记的两行代码的位置,TextField的实例myText成功格式化为18像素的粗体,如果调整一下位置,比如

(第二部分代码)

var myText:TextField=new TextField();
myText.width=200;
myText.wordWrap=true;
var myTextFormat:TextFormat=new TextFormat();
myTextFormat.bold=true;
myTextFormat.size=18;
myText.setTextFormat(myTextFormat);//注意位置
myText.text="Hellow World";//注意位置
myText.appendText(" Hi World");
addChild(myText);

此时再测试,则没有被格式化。通过setTextFormat()方法成功格式化的TextField实例,如果text属性重新被赋值,则原来相关的属性将被移除,比如把第一部分代码中myText.appendText(" Hi World");改成myText.text=" Hi World";比如

var myText:TextField=new TextField();
myText.width=200;
myText.wordWrap=true;
var myTextFormat:TextFormat=new TextFormat();
myTextFormat.bold=true;
myTextFormat.size=18;
myText.text="Hellow World";//注意位置
myText.setTextFormat(myTextFormat);//注意位置
myText.text=(" Hi World"); //重新赋值,将取消原有的格式
addChild(myText);

如果上述代码改成用默认文本格式进行处理,则是先进行defaultTextFormat复制,再进行TextField的属性text赋值,以后重新赋值不会改变格式。

var myText:TextField=new TextField();
myText.width=200;
myText.wordWrap=true;
var myTextFormat:TextFormat=new TextFormat();
myTextFormat.bold=true;
myTextFormat.size=18;
//myText.setTextFormat(myTextFormat);
myText.defaultTextFormat=myTextFormat; //先进行格式化
myText.text=" Hi World");//再进行text属性赋值
addChild(myText);

2,setTextFormat()方法可以对一段文本进行多种格式的设置,而defaultTextFormat只能对文本进行一种格式设置,但是,可以结合setTextFormat(),defaultTextFormat使用,对文本进行多样式控制,但是还是要遵循那个原则,即先设置defaultTextFormat属性,再为text赋值,再使用setTextFormat()格式化,如果最后重新为text重新赋值,则setTextFormat()设置的格式将被移除,defaultTextFormat设置的格式将被保存!

var myText:TextField=new TextField();
myText.width=200;
myText.wordWrap=true;
var myTextFormat:TextFormat=new TextFormat();
myTextFormat.bold=true;
myTextFormat.size=18;
var myNewTextFormat:TextFormat=new TextFormat();
myNewTextFormat.color=0x6600CC;
var myNewTextFormat2:TextFormat=new TextFormat();
myNewTextFormat2.color=0xFF0000;
myNewTextFormat2.size=25;
//注意下面红色部分的位置关系
myText.defaultTextFormat=myTextFormat;
myText.text="Hellow World. How are you ! ";

myText.setTextFormat(myNewTextFormat,0,6);
myText.setTextFormat(myNewTextFormat2,6,12);

addChild(myText);

测试结果图片为

`JFrame`的`ButtonGroup`主要用于管理一组互斥的单选按钮,即用户只能从这组按钮选择一个。如果你想要通过`ButtonGroup`来关联一些相关的`Label`和`TextField`,并让它们随着单选按钮的状态改变而隐藏或显示,你可以按照以下步骤操作: 1. 创建`JButton`、`JLabel`和`JTextField`实例,并将它们添加到`JPanel`或`GridBagLayout`等布局容器。 2. 创建一个`ButtonGroup`并给每个单选按钮添加进去。 ```java ButtonGroup group = new ButtonGroup(); JRadioButton radioButton1 = new JRadioButton("选项1"); JRadioButton radioButton2 = new JRadioButton("选项2"); // 将按钮添加到buttonGroup group.add(radioButton1); group.add(radioButton2); ``` 3. 为`JLabel`和`JTextField`设置监听器,当单选按钮状态变化时,更新其可见性。可以使用`ActionListener`或`ItemListener`来实现这个功能。 ```java radioButton1.addActionListener(e -> { if (radioButton1.isSelected()) { // 显示相关组件 label1.setVisible(true); textField1.setVisible(true); } else { // 隐藏相关组件 label1.setVisible(false); textField1.setVisible(false); } }); radioButton2.addItemListener(e -> { // 同样的逻辑,判断当前选的按钮,调整对应组件的可见性 }); ``` 4. 别忘了在创建`JFrame`时将包含所有组件的面板加入到`JFrame`。 注意,这种方式只适用于简单的场景,如果需要更复杂的交互或动态显示,你可能需要自定义更多的逻辑或者使用模型-视图-控制器(MVC)架构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值