- 浏览: 72396 次
- 性别:
- 来自: 广州
文章分类
最新评论
先上一个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方法会被调用。...
本篇将重点讲解如何利用CheckBox在ListView中实现批量选择功能,以及如何获取用户的选择信息。 首先,批量选择的核心是ListView中的复选框(CheckBox)元素。每个ListView项都可以包含一个CheckBox,允许用户通过...
而CheckBox则是提供多选功能的UI元素,用户可以勾选或取消以选择一个选项。将ListView与CheckBox结合使用,能够实现用户对列表中的多项内容进行选择,例如全选、反选或者单个选择,然后执行相应的操作,如批量删除。...
在Android开发中,自定义控件是一个常见的需求,特别是对于UI元素如CheckBox,有时需要根据设计需求进行定制化。本文将详细介绍如何自定义一个CheckBox,包括处理`wrap_content`问题和实现动画效果。 首先,从描述...
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 ...
private View.OnClickListener button_listener = new View.OnClickListener() { @Override public void onClick(View v) { // 处理点击事件 } }; ``` #### 四、文本框(TextView) **1. XML描述:** `...
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(...