Flex学习记录(转cookbook在图表中选择一个区域)

首先使用图表的selectionMode 属性设置需要选择的区域类型,然后使用鼠标键盘或者程序
来选择图表中的元素。
与其他列表组件相似,图表的元素是可选的。这有利于用数据网格或二级图表显示数据点上
更多的细节。要使图表可选,就要设定selectionMode 属性为single 或者mulitiple
(selectionMode 属性的默认设置是none)。selectionMode 属性设置为none 就代表图表不可选;
single 属性允许一次选择一个元素;multiple 属性允许多个元素同时被选择。
选择图表元素可以通过鼠标键盘,或者通过拖拽一个矩形框来选择多个点,或者使用
ActionScript 程序来实现。当选择图表上多个元素时,第一个被选择的元素会被系统认为是
定位点,而最后一个被选择的元素会被认为是插入符号。用鼠标选择的方式是非常直观的,
点击图表的元素就可以将其选中。要选择多个元素,只要按住Shift 键可以选择连续的元素,
按住Ctrl 键(在Mac 系统上是Command 键)可以逐一选择不连续的元素。使用键盘上的左右
方向键可以遍历一个图表上的所有数据列。当selectionMode 属性设置为multiple,在图表中
用鼠标脱出一个矩形区域可以选择该矩形区覆盖的所以元素。
用程序创建选区稍微负责一点。图表选区的API 提供选择元素和操作所选区域的功能。可
以使用以下ChartSeries 对象的属性来获得和设置选区状态:
• selectedItem
• selectedItems
• selectedIndex
• selectedIndices
除了上述的解决办法,还可以使用ChartBase 类的方法来实现:
• getNextItem()
• getPreviousItem()
• getFirstItem()
• getLastItem()
使用图表Change 事件可以监听用户是否使用鼠标或者键盘改变选区,但是对程序改变选区
的情况无效。
下面的例子展示的是在图表中选中了某个数据条后,在DataGrid 中就会相应地显示该数据
条的数据。在程序中还有上一个和下一个按钮,它们可以实现用程序更换选区。

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical" backgroundColor="0xFFFFFF">
<mx:Script>
<![CDATA[
[Bindable] public var chartDP:Array = [
{day:'Monday',rainfall:10,elevation:100,temperature:78},
{day:'Tuesday',rainfall:7,elevation:220,temperature:66},
{day:'Wednesday',rainfall:5,elevation:540,temperature:55},
{day:'Thursday',rainfall:8,elevation:60,temperature:84},
{day:'Friday',rainfall:11,elevation:390,temperature:52},
{day:'Saturday',rainfall:12,elevation:790,temperature:45},
{day:'Sunday',rainfall:14,elevation:1220,temperature:24}
];
private function changeSelectedIndex(offset:int):void
{
barSeries.selectedIndex+=offset;
onSelectionChange();
}
private function onSelectionChange():void
{
// programmatic changes to chart selection don't
//fire a Change event,
//so we need to manually reset
// the dataProvider of our detail grid when we
//programatically changethe selection
detailGrid.dataProvider = barChart.selectedChartItems;
}
]]>
</mx:Script>
<!-- use the change event to set the dataProvider of our
detail grid to our chart'
s selected items -->
<mx:BarChart id="barChart" dataProvider="{chartDP}"
selectionMode="multiple" change="onSelectionChange()">
<mx:verticalAxis>
<mx:CategoryAxis dataProvider="{chartDP}" categoryField="day" />
</mx:verticalAxis>
<mx:series>
<mx:BarSeries id="barSeries" selectedIndex="0"
yField="day" xField="rainfall" displayName="day" />
</mx:series>
</mx:BarChart>
<mx:HBox>
<mx:Button click="changeSelectedIndex(1)" label="Previous" />
<mx:Button click="changeSelectedIndex(-1)" label="Next" />
</mx:HBox>
<mx:DataGrid id="detailGrid" >
<mx:columns>
<mx:DataGridColumn dataField="xValue" headerText="rainfall" />
<mx:DataGridColumn dataField="yValue" headerText="day" />
</mx:columns>
</mx:DataGrid>
</mx:Application>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值