- 浏览: 71717 次
- 性别:
- 来自: 广州
文章分类
最新评论
先上一个GWT的CheckBox的Listener的练习
项目名为:testCheckBoxListener
以下为各个文件:
1.TestCheckBoxListener.html
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link type="text/css" rel="stylesheet" href="TestCheckBoxListener.css">
<title>test ChenkBox Listener</title>
<script type="text/javascript" language="javascript" src="testcheckboxlistener/testcheckboxlistener.nocache.js"></script>
</head>
<body>
<iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
<h1>测试 ChenkBox Listener</h1>
<table align="center">
<tr>
<td id="BtnPanel"></td>
</tr>
<tr>
<td id="MainPanel"></td>
</tr>
</table>
</body>
</html>
2.TestCheckBoxListener.gwt.xml
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='testcheckboxlistener'>
<inherits name='com.google.gwt.user.User'/>
<inherits name='com.google.gwt.user.theme.standard.Standard'/>
<entry-point class='com.checkBox.listener.client.TestCheckBoxListener'/>
<source path='client'/>
<source path='shared'/>
</module>
3.TestCheckBoxListener.java
package com.checkBox.listener.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.SimplePanel;
public class TestCheckBoxListener implements EntryPoint {
public void onModuleLoad() {
final String ps = "GP1_1|GP1_2|GP1_3|GP5_1|GP5_2|GP5_3|";
final Button setValueBtn = new Button("设CheckBoxs特定的值");
final Button reSetBtn = new Button("重设CheckBoxs的值");
final Button getValueBtn = new Button("取CheckBoxs值");
final HorizontalPanel BtnPanel = new HorizontalPanel();
final SimplePanel mainPanel = new SimplePanel();
final PermissionsComposite permissions = new PermissionsComposite();
RootPanel.get("BtnPanel").add(BtnPanel);
RootPanel.get("MainPanel").add(mainPanel);
BtnPanel.add(setValueBtn);
BtnPanel.add(reSetBtn);
BtnPanel.add(getValueBtn);
BtnPanel.setSpacing(5);
mainPanel.add(permissions);
ClickHandler clickHandler = new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if(event.getSource() == getValueBtn){
String values = permissions.getPermissionsValues();
Window.alert(values);
}else if(event.getSource() == setValueBtn){
permissions.setPermissionsValues(ps);
}else if(event.getSource() == reSetBtn){
permissions.reSetValue();
}
}
};
setValueBtn.addClickHandler(clickHandler);
reSetBtn.addClickHandler(clickHandler);
getValueBtn.addClickHandler(clickHandler);
}
}
4.PermissionsComposite.java
package com.checkBox.listener.client;
import java.util.ArrayList;
import java.util.List;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HorizontalPanel;
public class PermissionsComposite extends Composite {
private ALLCheckBox allBox = null;
private final FlexTable mainTable = new FlexTable();
List<ParentCheckBox> parentCheckBoxs = new ArrayList<ParentCheckBox>();
public PermissionsComposite() {
initWidget(mainTable);
initCheckBoxItem();
}
public String getPermissionsValues(){
if(allBox.getValue()){
return Permissions.ALL.name();
}else {
StringBuffer sb = new StringBuffer();
for(ParentCheckBox prBox : parentCheckBoxs){
sb.append(prBox.getChildBoxValues());
}
return sb.toString();
}
}
public void setPermissionsValues(String permissions){
reSetValue();
String[] values = permissions.split("\\|");
if(values[0].equals(Permissions.ALL.name())){
allBox.setValue(true);
allBox.onClick(null);
}else {
for(String v : values){
B: for(ParentCheckBox prBox : parentCheckBoxs){
for(ChildCheckBox childBox : prBox.childBoxs){
if(childBox.getName().equals(v)){
childBox.setValue(true);
prBox.refreshValueByChildBox();
break B;
}
}
}
}
}
}
public void reSetValue(){
allBox.setValue(false);
allBox.onClick(null);
}
private void initCheckBoxItem() {
int row = -1;
ParentCheckBox parentBox = null;
HorizontalPanel hPanel = null;
Permissions[] permissions = Permissions.values();
for (Permissions p : permissions) {
if(p.name().contains("Group") || p.name().contains("ALL")){
row++;
if(p.name().contains("ALL")){
mainTable.setWidget(row, 0, allBox = new ALLCheckBox(p.getLabelName()));
}else{
mainTable.setWidget(row, 0, parentBox = new ParentCheckBox(p.getLabelName()));
parentCheckBoxs.add(parentBox);
}
mainTable.setWidget(row, 1, hPanel = new HorizontalPanel());
mainTable.getFlexCellFormatter().setHorizontalAlignment(row, 0, HorizontalPanel.ALIGN_LEFT);
mainTable.getFlexCellFormatter().setHorizontalAlignment(row, 1, HorizontalPanel.ALIGN_LEFT);
}else {
ChildCheckBox childBox = new ChildCheckBox(p.getLabelName(), parentBox);
childBox.setName(p.name());
hPanel.add(childBox);
}
}
mainTable.setBorderWidth(1);
mainTable.setCellPadding(1);
mainTable.setCellSpacing(0);
mainTable.setWidth("100%");
}
class ALLCheckBox extends CheckBox implements ClickHandler{
public ALLCheckBox(String label) {
super(label);
this.addClickHandler(this);
}
@Override
public void onClick(ClickEvent event) {
Boolean value = getValue();
for (ParentCheckBox prBox : parentCheckBoxs) {
prBox.setValue(value);
prBox.refresChildBoxs(value);
}
}
}
class ParentCheckBox extends CheckBox implements ClickHandler{
List<ChildCheckBox> childBoxs = new ArrayList<ChildCheckBox>();
public ParentCheckBox(String label) {
super(label);
this.addClickHandler(this);
}
@Override
public void onClick(ClickEvent event) {
boolean value = getValue()? true : false;
refresChildBoxs(value);
changeALLCheckBox();
}
private void refresChildBoxs(boolean value) {
for (ChildCheckBox childBox : childBoxs) {
childBox.setValue(value);
}
}
public void refreshValueByChildBox() {
int i = 0;
for (ChildCheckBox childBox : childBoxs) {
if(childBox.getValue())
i++;
else
break;
}
if(i == childBoxs.size())
this.setValue(true);
else
this.setValue(false);
}
public void changeALLCheckBox(){
int i = 0;
for (ParentCheckBox prBox : parentCheckBoxs) {
if(prBox.getValue())
i++;
else
break;
if(i == parentCheckBoxs.size())
allBox.setValue(true);
else
allBox.setValue(false);
}
}
public String getChildBoxValues(){
StringBuffer sb = new StringBuffer();
for(ChildCheckBox childBox : childBoxs) {
if(childBox.getValue())
sb.append(childBox.getName()).append("|");
}
return sb.toString();
}
}
static class ChildCheckBox extends CheckBox implements ClickHandler{
final ParentCheckBox parentBox;
public ChildCheckBox(String label, ParentCheckBox parentBox) {
super(label);
this.parentBox = parentBox;
this.parentBox.childBoxs.add(this);
this.addClickHandler(this);
}
@Override
public void onClick(ClickEvent event) {
this.parentBox.refreshValueByChildBox();
this.parentBox.changeALLCheckBox();
}
}
}
5.Permissions.java
package com.checkBox.listener.client;
public enum Permissions {
Group1("一组"),GP1_1("一组1"),GP1_2("一组2"),GP1_3("一组3"),
Group2("二组"),GP2_1("二组1"),GP2_2("二组2"),
Group3("三组"),GP3_1("三组1"),
Group4("四组"),GP4_1("四组1"),GP4_2("四组2"),GP4_3("四组3"),GP4_4("四组4"),
Group5("五组"),GP5_1("五组1"),GP5_2("五组2"),GP5_3("五组3"),
Group6("六组"),GP6_1("六组1"),GP6_2("六组2"),
ALL("全选");
private String labelName;
private Permissions(String labelName) {
this.labelName = labelName;
}
public String getLabelName() {
return labelName;
}
}
相关推荐
- `setOnCheckedChangeListener(OnCheckedChangeListener listener)` 方法,为`CheckBox`设置监听器。 - `setChecked(boolean checked)` 方法,用于设置`CheckBox`的选中状态。 在代码中,我们需要处理以下逻辑: ...
private OnItemClickListener listener; //...省略其他方法 public static class ProductViewHolder extends RecyclerView.ViewHolder { TextView productName, productPrice; CheckBox checkBox; //......
在Android开发中,Listener接口是实现用户交互和事件处理的关键组件。它们允许应用程序对用户的操作进行响应,如点击按钮、滑动屏幕等。本篇文章将深入探讨Android中Listener的多种实现方式,帮助开发者更好地理解和...
* getParameterValues(String key) :返回一个字符串数组,获得 name 和 key 一样的表单控件的数据,但相同 name 的控件会有多个,如同名的多个 checkbox 等。 * getParameterMap() :返回一个包含所有参数的 Map,...
当需要在ListView的每一项中添加可选功能,例如勾选或选择,我们通常会内嵌Checkbox控件。本教程将深入探讨如何实现ListView内嵌Checkbox的批处理功能,以提供用户选择多个条目并进行统一操作的能力。 首先,我们...
3. `setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener listener)`:此方法用于设置一个监听器,每当CheckBox的选中状态发生变化时,都会触发这个监听器中的回调函数。你可以在这里编写处理用户选择...
- **setOnCheckedChangeListener(listener)**: 这个方法用于设置一个 CompoundButton.OnCheckedChangeListener,监听CheckBox的选择状态变化。当CheckBox的状态发生改变时,监听器的onCheckedChanged方法会被调用。...
在Android开发中,自定义控件是一个常见的需求,特别是对于UI元素如CheckBox,有时需要根据设计需求进行定制化。本文将详细介绍如何自定义一个CheckBox,包括处理`wrap_content`问题和实现动画效果。 首先,从描述...
本篇将重点讲解如何利用CheckBox在ListView中实现批量选择功能,以及如何获取用户的选择信息。 首先,批量选择的核心是ListView中的复选框(CheckBox)元素。每个ListView项都可以包含一个CheckBox,允许用户通过...
而CheckBox则是提供多选功能的UI元素,用户可以勾选或取消以选择一个选项。将ListView与CheckBox结合使用,能够实现用户对列表中的多项内容进行选择,例如全选、反选或者单个选择,然后执行相应的操作,如批量删除。...
1. `setCheckedChangeListener(CompoundButton.OnCheckedChangeListener listener)`: 设置CheckedChangeListener来监听CheckBox的选中状态变化。 2. `isChecked()`: 返回CheckBox当前是否被选中。 3. `setChecked...
CheckBox checkBox = (CheckBox) this.findViewById(R.id.plain_cb); boolean isChecked = checkBox.isChecked(); // 检查是否选中 String selectedText = checkBox.getText().toString(); // 获取选中文字 ``` ...
<f:ajax event="change" listener="#{bean.onSelectAllChanged}" /> ``` 5. **标签`源码`和`工具`**:这两个标签可能暗示了文章会分享有关如何阅读和理解JSF组件的源码,以及可能使用的辅助工具或调试技巧。例如...
checkBox01.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { // 获取事件源(即复选框本身) JCheckBox checkBox = (JCheckBox) e.getSource(); System.out....
最后,为了让开发者能够像使用系统自带的`CheckBox`或`RadioButton`那样监听开关状态的变化,我们需要覆盖`setOnCheckedChangeListener()`方法,并在状态改变时调用传入的监听器。 ```java @Override public void ...
Untriggered Sometimes, you just want to set ... UntriggeredCheckBox and the like allow you to set this checked state without triggering the listener. Wow! Usage final UntriggeredCheckBox checkBox =
使用 ItemListener 或 ChangeListener 监听选中/未选中的状态。 5. **布局管理器** Java Swing 提供了几种布局管理器,如 FlowLayout、GridLayout、BorderLayout 和 GridBagLayout,用于控制组件在窗口中的位置和...
SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences ...
- **方法**: `addItemListener(ItemListener listener)`, `removeItemListener(ItemListener listener)`, `getState()`, `setState(boolean state)` - **示例**: ```java JCheckBox checkbox = new JCheckBox(...