java如何获取JRadioButton的值赋值给JRadioButton的问题,望高手指点啊!!! 50

为什么下面的代码中在外面定义的Strings,在Stringchoice=group.getSelection().getActionCommand();下面的那个地方只... 为什么下面的代码中在外面定义的String s,在String choice = group.getSelection().getActionCommand(); 下面的那个地方只可以在那里赋值,而不能传到外面来,在下面的 System.out.println(s);语句,输出的是nul,望高手指点啊

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
public class MyJRdio extends JFrame
{
public MyJRdio() {
String s;
Container c = getContentPane();
c.setLayout(null);
JRadioButton jrb = new JRadioButton("男");
jrb.setActionCommand("女");
jrb.setBounds(0, 0, 50, 20);
JRadioButton jrb1 = new JRadioButton("女");
jrb1.setActionCommand("女"); //这个一定要设置,事件中取的是它
jrb1.setBounds(50, 0, 50, 20);
final ButtonGroup group = new ButtonGroup();
group.add(jrb);
group.add(jrb1);
class SexActionListener implements ActionListener
{
public void actionPerformed(ActionEvent ev)
{
String choice = group.getSelection().getActionCommand();
//你可以在这里定义进行赋值(每次重新选中单选框都会输出选中的值)
//这里出错
s = choice;
System.out.println("选择了****-----: " + choice);
}
}
ActionListener alisten = new SexActionListener();
/**
* * 为2个单选框添加事件
* */
jrb.addActionListener(alisten);
jrb1.addActionListener(alisten);
c.add(jrb);
c.add(jrb1);
setSize(500, 500);
setVisible(true);
System.out.println(s);
}
public static void main(String[] args)
{
new MyJRdio();
}

}
展开
 我来答
wsfdds
2012-12-17 · TA获得超过150个赞
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:140万
展开全部
休假了,没事干,回答一些简单的问题,你的代码写的很不规范,变量要在field区域声明。修改好的代码如下,测试通过。
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
public class MyJRdio extends JFrame{
//declare attributes in this area:
private String s;
private JRadioButton jrb=new JRadioButton("男");
private JRadioButton jrb1=new JRadioButton("女");
private ButtonGroup group=new ButtonGroup();
public MyJRdio(){
Container c=this.getContentPane();
c.setLayout(null);
jrb.setActionCommand("男");
jrb.setBounds(0, 0, 50, 20);
jrb1.setActionCommand("女");
jrb1.setBounds(50, 0, 50, 20);
group.add(jrb);
group.add(jrb1);
class SexActionListener implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
String choice=group.getSelection().getActionCommand();
s=choice;
System.out.println("选择了***----:"+choice);

}

}
ActionListener aListener=new SexActionListener();

// register jrb and jrb1 to alistener
jrb.addActionListener(aListener);
jrb1.addActionListener(aListener);
c.add(jrb);
c.add(jrb1);
this.setSize(50,50);
this.setVisible(true);
System.out.println(s);
}
public static void main(String[] args) {
new MyJRdio();
}
}

输出:
null
选择了***----:男
选择了***----:女
更多追问追答
追问
但是你看,输出的s依然是null,没有把choice的值传出去给外面定义的s哦
追答
……把这行:System.out.println(s); 注释掉就完了
你原先就有这行代码,我没就没给你删掉,你的s刚开始没有被赋值,你直接在类的构造函数中打印出来,java里的String是一个类,你说它不打印null难道打印小日本是SB啊?
同益2012
2012-12-15 · 贡献了超过210个回答
知道答主
回答量:210
采纳率:0%
帮助的人:51万
展开全部
public String s=null;

public MyJRdio() {}

还有男的那个按钮你设成女的了= =
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式