2011-04-26 142 views
0

我有一个Flex Screen MyData.mxml,它有一个使用DataGrid的值表。 DataGrid的所有样式都包含在作为Flex库项目一部分的default.css文件中。这将被转换为一个SWC文件,并用于我使用MyData.mxml的Flex项目中。我们如何动态更改DataGrid的字体大小和字体系列?

在MyData屏幕中,我们可以选择更改DataGrid的字体大小。我们有一个RadioButtonGroup中,用户可以从两个选项按钮选择:

  • 普通字体(宋体,12)
  • 小字体(宋体,11)

当用户选择“正常Font'按钮,DataGrid中的所有数据都应设置为Verdana 12,并且当用户选择Small Font选项按钮时,DataGrid中的所有数据都应设置为Verdana 11.

我该如何实现此目的?

回答

1

我想下面的代码可以解决你的问题:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application layout="vertical" verticalAlign="middle" xmlns:mx="http://www.adobe.com/2006/mxml"> 
    <mx:Script> 
    <![CDATA[ 
     public static const NORMAL_STYLE:String = "normal"; 
     public static const SMALL_STYLE:String = "small"; 

     protected function styleGroup_changeHandler(event:Event):void 
     { 
      var fontFamily:String = "Verdana"; 
      var fontSize:int; 
      switch (styleGroup.selectedValue) 
      { 
       case NORMAL_STYLE: 
        fontSize = 12; 
        break; 
       case SMALL_STYLE: 
        fontSize = 11; 
        break; 
      } 
      dataGrid.setStyle("fontFamily", fontFamily); 
      dataGrid.setStyle("fontSize", fontSize); 
     } 
    ]]> 
    </mx:Script> 

    <mx:ArrayCollection id="dataGridData"> 
     <mx:source> 
      <mx:Array> 
       <mx:Object first="First1" second="Second1" /> 
       <mx:Object first="First2" second="Second2" /> 
      </mx:Array> 
     </mx:source> 
    </mx:ArrayCollection> 

    <mx:DataGrid dataProvider="{dataGridData}" height="200" id="dataGrid"> 
     <mx:columns> 
      <mx:DataGridColumn dataField="first" headerText="First" /> 
      <mx:DataGridColumn dataField="second" headerText="Second" /> 
     </mx:columns> 
    </mx:DataGrid> 
    <mx:RadioButtonGroup change="styleGroup_changeHandler(event)" id="styleGroup" /> 
    <mx:RadioButton group="{styleGroup}" label="Normal" value="{NORMAL_STYLE}" /> 
    <mx:RadioButton group="{styleGroup}" label="Small" value="{SMALL_STYLE}" /> 
</mx:Application> 
+0

海的朋友,感谢您的一种回应!我试过你的建议,并且工作正常。但是,我被要求从CSS文件中获取样式名称。所以,我在css文件中添加了两个样式组件,如下所示:'.dataGridNormal'和'.dataGridSmall',并在主mxml中的相应条件块中调用它们。感谢您的亲切帮助。 – Marshal 2011-04-26 12:23:39

+0

我很高兴我的解决方案帮助您解决您的问题:) – Constantiner 2011-04-26 13:27:09