JRadioButton的问题

RunningCamel 2016-05-29 11:21:27
	public void itemStateChanged(ItemEvent e) {
if (e.getSource() == jRadioButton1) {
System.out.println("jRadioButton1");

} else {
System.out.println("jRadioButton2");
}
}

上面是一个一组JRadioButton的选中事件处理,但是执行这个程序,应该是选中那个就打印那个按钮,但是结果是不管是选中哪个,结果都打印两个。“jRadioButton1 jRadioButton2”,这是怎么回事啊
...全文
212 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
RunningCamel 2016-05-30
  • 打赏
  • 举报
回复
引用 8 楼 qq_31417619 的回复:
引用 7 楼 XZ_ZC 的回复:
[quote=引用 6 楼 qq_31417619 的回复:] e.getItem() 代表的是触发的控件对不对,两个按钮中间是联动的,如果一个按钮是选中状态,你点了另一个按钮,两个控件都会itemStateChanged,所以你不应该根据e.getItem 来判断,你应该是判断有没有被选中。
我改成了由isSelected()来判断是不是被选中,
应该没问题了吧[/quote]嗯 功能实现了
Nnick_s 2016-05-30
  • 打赏
  • 举报
回复
引用 7 楼 XZ_ZC 的回复:
引用 6 楼 qq_31417619 的回复:
e.getItem() 代表的是触发的控件对不对,两个按钮中间是联动的,如果一个按钮是选中状态,你点了另一个按钮,两个控件都会itemStateChanged,所以你不应该根据e.getItem 来判断,你应该是判断有没有被选中。
我改成了由isSelected()来判断是不是被选中,
应该没问题了吧
RunningCamel 2016-05-30
  • 打赏
  • 举报
回复
引用 6 楼 qq_31417619 的回复:
e.getItem() 代表的是触发的控件对不对,两个按钮中间是联动的,如果一个按钮是选中状态,你点了另一个按钮,两个控件都会itemStateChanged,所以你不应该根据e.getItem 来判断,你应该是判断有没有被选中。
我改成了由isSelected()来判断是不是被选中,
Nnick_s 2016-05-30
  • 打赏
  • 举报
回复
e.getItem() 代表的是触发的控件对不对,两个按钮中间是联动的,如果一个按钮是选中状态,你点了另一个按钮,两个控件都会itemStateChanged,所以你不应该根据e.getItem 来判断,你应该是判断有没有被选中。
RunningCamel 2016-05-29
  • 打赏
  • 举报
回复
引用 2 楼 qq_31417619 的回复:
执行了2次,你是不是两个按钮都监听了?e.getSource() 在每个按钮里面都代表自己一个是jRadioButton1 一个是jRadioButton2 因为是jRadioButton 你又设置在一个ButtonGroup里面所以会联动啊。
好像也不是这个问题。下面这个例子,我是想实现我点击那个按钮,就打印一个相应的数字1或2,但是如果是监听两个按钮的话,那么不管按哪一个按钮,一次都会打印两个数字;而如果是只监听一个按钮的或,就会出现不管按那个按钮,就只打印一种数字。你试试看
import java.awt.GridLayout;
import java.io.File;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JTextArea;
import java.awt.event.WindowListener ;
import java.awt.event.WindowAdapter ;
import java.awt.event.WindowEvent ;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.Container ;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup ;
import java.awt.event.ItemListener ;
import java.awt.event.ItemEvent ;
import javax.swing.ImageIcon ;
import java.awt.Color ;

class MyRadioButtonHandle implements ItemListener{
	private JFrame jFrame= new JFrame("Hello World");
	private Container cont = jFrame.getContentPane();
	private JRadioButton jrb1 = new JRadioButton("男");
	private JRadioButton jrb2 = new JRadioButton("女");
	private JPanel jPanel= new JPanel();

	private ButtonGroup buttonGroup = new ButtonGroup() ;
	
	public MyRadioButtonHandle(){
		
		jPanel.setBorder(BorderFactory.createTitledBorder("请选择性别")) ;
		jPanel.setLayout(new GridLayout(1,3));
		jPanel.add(jrb1);
		jPanel.add(jrb2);

		buttonGroup.add(jrb1);
		buttonGroup.add(jrb2);

		jrb1.addItemListener(this);//监听事件
		jrb2.addItemListener(this);

		cont.add(jPanel);
		this.jFrame.setSize(400,300);
		this.jFrame.pack();
		this.jFrame.setLocation(300,300);
		this.jFrame.setVisible(true);
		this.jFrame.addWindowListener(new WindowAdapter(){
			public void WindowClosing(WindowEvent e){
				System.exit(1);
			}
		});
	}

	public void itemStateChanged(ItemEvent e)  {
		if(e.getItem() == jrb1){
			System.out.println("1");//选择jrb1就打印1
			jrb1.setForeground(Color.RED);
			jrb2.setForeground(Color.black);
		}else{
			System.out.println("2");
			jrb1.setForeground(Color.black);
			jrb2.setForeground(Color.BLUE);
		}
	} 
	
}

public class JRadioButtonDemo{
	public static void main(String args[]){
		new MyRadioButtonHandle();
	}
}
RunningCamel 2016-05-29
  • 打赏
  • 举报
回复
引用 1 楼 baidu_34630879 的回复:
应该是运行了2次
能详细说明下吗?
RunningCamel 2016-05-29
  • 打赏
  • 举报
回复
引用 2 楼 qq_31417619 的回复:
执行了2次,你是不是两个按钮都监听了?e.getSource() 在每个按钮里面都代表自己一个是jRadioButton1 一个是jRadioButton2 因为是jRadioButton 你又设置在一个ButtonGroup里面所以会联动啊。
哦,那只需要监听一个按钮就行了啊,它是在一个ButtonGroup里面。如果选择了一个,那另外一个就默认没选择了是吧。原来是这样。谢谢啊
Nnick_s 2016-05-29
  • 打赏
  • 举报
回复
执行了2次,你是不是两个按钮都监听了?e.getSource() 在每个按钮里面都代表自己一个是jRadioButton1 一个是jRadioButton2 因为是jRadioButton 你又设置在一个ButtonGroup里面所以会联动啊。
baidu_34630879 2016-05-29
  • 打赏
  • 举报
回复
应该是运行了2次

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧