java swing怎么保存复选框的选择状态?

我有一个设置的窗体,里面有2个复选框,主窗体有一个设置的跳转。当我在主窗体点设置打开设置窗体,选择某个复选框时,怎么保存这个选择状态,以便于我在主窗体能获取到这个复选框是... 我有一个设置的窗体,里面有2个复选框,主窗体有一个设置的跳转。当我在主窗体点设置打开设置窗体,选择某个复选框时,怎么保存这个选择状态,以便于我在主窗体能获取到这个复选框是否选择呢? 展开
 我来答
mrchr
推荐于2016-04-13 · TA获得超过411个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:149万
展开全部

我觉得如果使用Swing开发程序,你必须学会使用BeansBinding。BeansBinding能够将JavaBean的属性值绑定在一起。比如说有两个Bean,一个是你的数据Model,一个是JCheckbox。那么,你可以将JcheckBox的selected属性绑定到数据Model的一个属性上。这样,无特殊需要的多数情况下你就不必去关心JCheckBox是否被勾选,只需要关心数据Model的状态了。

使用BeansBinding,你必须引入appframework和beansbinding两个包。具体的下载,你可以到Maven库中查询并下载(google “maven repos”就能找到很多Maven库了)。

举个简单的例子

import javax.swing.JFrame;

import org.jdesktop.beansbinding.BeanProperty;

import org.jdesktop.beansbinding.Binding;

import org.jdesktop.beansbinding.BindingGroup;

import org.jdesktop.beansbinding.Bindings;

import org.jdesktop.beansbinding.AutoBinding.UpdateStrategy;

import javax.swing.JPanel;

import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JTextField;

import javax.swing.JCheckBox;

public class Swing8{

/**

 * 一个非常简单的JavaBean,POJO。当作数据Model

 */

public class Computer{

private boolean huihuai; // 是否坏了

private String pinpai; // 品牌

private String huihuaiyuanyin; // 毁坏原因

private String yonghu; // 谁的电脑

public boolean isHuihuai() {

return huihuai;

}

public void setHuihuai(boolean huihuai) {

this.huihuai = huihuai;

}

public String getPinpai() {

return pinpai;

}

public void setPinpai(String pinpai) {

this.pinpai = pinpai;

}

public String getHuihuaiyuanyin() {

return huihuaiyuanyin;

}

public void setHuihuaiyuanyin(String huihuaiyuanyin) {

this.huihuaiyuanyin = huihuaiyuanyin;

}

public String getYonghu() {

return yonghu;

}

public void setYonghu(String yonghu) {

this.yonghu = yonghu;

}

public String toString(){

return "Computer当前属性值是:\n" +

"yonghu:  " + yonghu + "\n" + 

"pinpai:  " + pinpai + "\n" + 

"huihuai:  " + huihuai + "\n" + 

"huihuaiyuanyin:  " + huihuaiyuanyin;

}

}

public Swing8(){

// 创建一个Frame

final JFrame frame = new JFrame("BeansBinding 示例");

frame.setBounds(100, 100, 500, 380);

final JPanel panel = new JPanel();

frame.getContentPane().add(panel, BorderLayout.CENTER);

panel.setLayout(new GridLayout(4, 2, 2, 2));

JLabel label = new JLabel("谁的电脑:");

panel.add(label);

final JTextField ut; // 用户

final JTextField bt; // 品牌

final JCheckBox cb; // 是否坏了

final JTextField rt; // 毁坏原因

final Computer c = new Computer(); // 创建一个Model

ut = new JTextField();

panel.add(ut);

ut.setColumns(10);

JLabel label_1 = new JLabel("电脑品牌:");

panel.add(label_1);

bt = new JTextField();

panel.add(bt);

bt.setColumns(10);

cb = new JCheckBox("是否坏了");

panel.add(cb);

JLabel label_2 = new JLabel("");

panel.add(label_2);

JLabel label_3 = new JLabel("毁坏原因:");

panel.add(label_3);

rt = new JTextField();

panel.add(rt);

rt.setColumns(10);

// 绑定属性

BindingGroup bg = new BindingGroup(); // 绑定组,绑定的内容都要在绑定组中。

// 使用Bindings.createAutoBinding静态方法创建一个绑定实例。

// UpdateStrategy.READ_WRITE 绑定策略,读写

// ut 绑定源对象

// BeanProperty.create("text") 绑定源的属性

// c 绑定目标对象

// BeanProperty.create("yonghu") 绑定目标属性

// 将ut的text属性绑定到c的yonghu属性上。

Binding userBind = Bindings.createAutoBinding(UpdateStrategy.READ_WRITE, ut, BeanProperty.create("text"), c, BeanProperty.create("yonghu"));

// 将绑定实例放入绑定组。

bg.addBinding(userBind);

// 下面的类似,不再详细写

// ut.text -> c.pinpai

bg.addBinding(Bindings.createAutoBinding(UpdateStrategy.READ_WRITE, bt, BeanProperty.create("text"), c, BeanProperty.create("pinpai")));

// rt.text -> c.huihuaiyuanyin

bg.addBinding(Bindings.createAutoBinding(UpdateStrategy.READ_WRITE, rt, BeanProperty.create("text"), c, BeanProperty.create("huihuaiyuanyin")));

// cb.selected -> c.huihuai

bg.addBinding(Bindings.createAutoBinding(UpdateStrategy.READ_WRITE, cb, BeanProperty.create("selected"), c, BeanProperty.create("huihuai")));

// 若程序有需求,只有当勾选了“是否坏了”CheckBox,才能输入"毁坏原因",怎么办?

// 好办,将cb.selected绑定到rt的enabled属性上。

bg.addBinding(Bindings.createAutoBinding(UpdateStrategy.READ_WRITE, cb, BeanProperty.create("selected"), rt, BeanProperty.create("enabled")));

// 重要的一句话,让版定生效

bg.bind();

//好吧,我们再加一个按钮,看看效果如何。

JButton button = new JButton("查看绑定效果");

button.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

JOptionPane.showMessageDialog(frame, c.toString(), "Model属性值列表", JOptionPane.INFORMATION_MESSAGE);

}

});

frame.getContentPane().add(button, BorderLayout.SOUTH);

frame.setVisible(true);

}

public static void main(String args[]){

new Swing8();

}

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式