JAVA JCKECKBOX 事件 g.addItemListener(new JCheckboxListener());

ad5248 2010-04-18 08:49:43
g.addItemListener(new JCheckboxListener());
g_1.addItemListener(new JCheckboxListener());
g_2.addItemListener(new JCheckboxListener());
g_3.addItemListener(new JCheckboxListener());
这样写事件
class JCheckboxListener implements ItemListener {
public void itemStateChanged(ItemEvent e) {
if (g.isSelected()) {/* button事件 */}
if (g_1.isSelected()) { /*button事件 */}
if (g_2.isSelected()) {/*button事件*/ }
if (g_3.isSelected()) {/*button事件*/ }
}
//为什么我只要把他们选中一次 即使下次把选中的取消了 那些button事件还在 很是疑惑 高人回答
...全文
292 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ad5248 2010-04-18
  • 打赏
  • 举报
回复
private void AddactionListener(){
g.addItemListener(new JCheckboxListener());
g_1.addItemListener(new JCheckboxListener());
g_2.addItemListener(new JCheckboxListener());
g_3.addItemListener(new JCheckboxListener());
gatesensor.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(gatesensor.isSelected()){
isnotify = true;
sensorTriggered("The Sensor Statement: ON");
}
else{
isnotify = false;
sensorTriggered("The Sensor Statement: OFF");
}
}

});

}

class JCheckboxListener implements ItemListener {
public void itemStateChanged(ItemEvent e) {
if (g.isSelected()) {
on.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!G1.isLockStatement()) {
G1.setLockStatement(true);
G1.setDoorStatement(false);
lab.setText("Statement:[locked & closed ]");
} else {
JOptionPane.showMessageDialog(null,
"THE GARAGE GATE IS LOCKED !");
}
}
});
off.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (G1.isLockStatement()) {
G1.setLockStatement(false);
G1.setDoorStatement(true);
lab.setText("Statement:[unlocked & opened ]");
} else {
JOptionPane.showMessageDialog(null,
"THE GARAGE GATE IS UNLOCKED !");
}
}
});
open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (G1.isDoorStatement()) {

JOptionPane.showMessageDialog(null,
"THE GARAGE GATE IS OPENED!!");

} else {
if (G1.isLockStatement()) {
JOptionPane
.showMessageDialog(null,
"when you open the gate, unlocked frist!");
} else {
G1.setLockStatement(false);
G1.setDoorStatement(true);
lab.setText("Statement:[unlocked & opened ]");
}
}
}

});
close.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!G1.isDoorStatement()) {
JOptionPane.showMessageDialog(null,
"THE GARAGE GATE IS CLOSED !!");

} else {
G1.setDoorStatement(true);
G1.setLockStatement(false);
lab.setText("Statement:[locked & closed ]");
}
}
}

);
}
if (g_1.isSelected()) {
on.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!G2.isLockStatement()) {
if(G2.isDoorStatement()){
JOptionPane.showMessageDialog(null,
"when locked the door , frist close the door!");
}
else{
G2.setLockStatement(true);
lab_1.setText("Statement:[locked & closed ]");
}
} else {
JOptionPane.showMessageDialog(null,
"THE GATE one IS LOCKED !");
}
}
});
off.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (G2.isLockStatement()) {
G2.setLockStatement(false);
lab_1.setText("Statement:[unlocked & closed ]");
} else {
JOptionPane.showMessageDialog(null,
"THE GATE one IS UNLOCKED !");
}
}
});
open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (G2.isDoorStatement()) {

JOptionPane.showMessageDialog(null,
"THE GATE one IS OPENED !!");

} else {
if (G2.isLockStatement()) {
JOptionPane
.showMessageDialog(null,
"when you open the door , unlocked frist!");
} else {
G2.setDoorStatement(true);
lab_1.setText("Statement:[unlocked & opened ]");
}
}
}

});
close.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!G2.isDoorStatement()) {
JOptionPane.showMessageDialog(null,
"THE GATE one IS CLOSED !!");

} else {
G2.setDoorStatement(false);
lab_1.setText("Statement:[unlocked & closed ]");
}
}
}

);
}
if (g_2.isSelected()) {
on.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!G3.isLockStatement()) {
if(G3.isDoorStatement()){
JOptionPane.showMessageDialog(null,
"when locked the door , frist close the door!");
}
else{
G3.setLockStatement(true);
lab_2.setText("Statement:[locked & closed ]");
}
} else {
JOptionPane.showMessageDialog(null,
"THE GATE two IS LOCKED !");
}
}
});
off.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (G3.isLockStatement()) {
G3.setLockStatement(false);
lab_2.setText("Statement:[unlocked & closed ]");
} else {
JOptionPane.showMessageDialog(null,
"THE GATE two IS UNLOCKED !");
}
}
});
open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (G3.isDoorStatement()) {

JOptionPane.showMessageDialog(null,
"THE GATE two IS OPENED !!");

} else {
if (G3.isLockStatement()) {
JOptionPane
.showMessageDialog(null,
"when you open the door , unlocked frist!");
} else {
G3.setDoorStatement(true);
lab_2.setText("Statement:[unlocked & opened ]");
}
}
}

});
close.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!G3.isDoorStatement()) {
JOptionPane.showMessageDialog(null,
"THE two GATE IS CLOSED!");

} else {
G3.setDoorStatement(false);
lab_2.setText("Statement:[unlocked & closed ]");
}
}
}

);
}
if (g_3.isSelected()) {
on.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!G4.isLockStatement()) {
if(G4.isDoorStatement()){
JOptionPane.showMessageDialog(null,
"when locked the door ,frist close the door!");
}
else{
G4.setLockStatement(true);
lab_3.setText("Statement:[locked & closed ]");
}
} else {
JOptionPane.showMessageDialog(null,
"THE GATE three IS LOCKED !");
}
}
});
off.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (G4.isLockStatement()) {
G4.setLockStatement(false);
lab_3.setText("Statement:[unlocked & closed ]");
} else {
JOptionPane.showMessageDialog(null,
"THE GATE three IS UNLOCKED !");
}
}
});
open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (G4.isDoorStatement()) {

JOptionPane.showMessageDialog(null,
"THE GATE three IS OPENED!");

} else {
if (G4.isLockStatement()) {
JOptionPane
.showMessageDialog(null,
"when you open the door , unlocked frist!");
} else {
G4.setDoorStatement(true);
lab_3.setText("Statement:[unlocked & opened ]");
}
}
}

});
close.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!G4.isDoorStatement()) {
JOptionPane.showMessageDialog(null,
"THE GATE three IS CLOSED!");

} else {
G4.setDoorStatement(false);
lab_3.setText("Statement:[unlocked & closed ]");
}
}
}

);
}
else{
return;
}
}
}


@Override
public void sensorTriggered(String message) {
// TODO Auto-generated method stub
if(isnotify){
lab_5.setForeground(Color.RED);
JOptionPane.showMessageDialog(null,
"Sensor Start runing!");
}
else{
lab_5.setForeground(Color.YELLOW);
JOptionPane.showMessageDialog(null,
"Sensor end runing!");
}
lab_5.setText(message);

}
}
//第一次选取都正常 但是选取一次后就不正常了 好
justchenjie 2010-04-18
  • 打赏
  • 举报
回复
这个应该是逻辑的问题吧。你的那些button事件相同吗?还有就是if之后的默认处理else也加上试试
//创建File菜单 menu =new JMenu("文件"); menu.setMnemonic(KeyEvent.VK_F); menubar.add(menu); menuItem =new JMenuItem("新建",KeyEvent.VK_N);//创建File子菜单 menuItem.addActionListener(al); menu.add(menuItem); menuItem =new JMenuItem("打开",KeyEvent.VK_O); menuItem.addActionListener(al); menu.add(menuItem); menuItem =new JMenuItem("保存",KeyEvent.VK_S); menuItem.addActionListener(al); menu.add(menuItem); menuItem =new JMenuItem("另成为",KeyEvent.VK_A); menuItem.addActionListener(al); menu.add(menuItem); menu.add(new JSeparator()); menuItem =new JMenuItem("退出",KeyEvent.VK_E); menuItem.addActionListener(al); menu.add(menuItem); //创建Edit菜单 menu =new JMenu("编辑"); menu.setMnemonic(KeyEvent.VK_E); menubar.add(menu); menuItem =new JMenuItem("剪切");//创建Edit子菜单 menuItem.addActionListener(al); menu.add(menuItem); menuItem =new JMenuItem("复制",KeyEvent.VK_C); menuItem.addActionListener(al); menu.add(menuItem); menuItem =new JMenuItem("粘贴",KeyEvent.VK_P); menuItem.addActionListener(al); menu.add(menuItem); menu.add(new JSeparator()); menuItem =new JMenuItem("全部选择",KeyEvent.VK_S); menuItem.addActionListener(al); menu.add(menuItem); menu.add(new JSeparator()); menuItem =new JMenuItem("清屏",KeyEvent.VK_S); menuItem.addActionListener(al); menu.add(menuItem); //创建View菜单 menu =new JMenu("视图"); menu.setMnemonic(KeyEvent.VK_V); menubar.add(menu); radioMenuItem =new JRadioButtonMenuItem("自动换行",true);//创建View子菜单 radioMenuItem.addItemListener(il); menu.add(radioMenuItem); radioMenuItemrow =new JRadioButtonMenuItem("显示行数",false); radioMenuItemrow.addItemListener(il); menu.add(radioMenuItemrow); menu.add(new JSeparator()); submenu =new JMenu("字体");//创建字体子菜单 menu.add(submenu); ButtonGroup group =new ButtonGroup(); radioMenuItem =new JRadioButtonMenuItem("Bold"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Italic"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Plain"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Bold+Italic"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group.add(radioMenuItem); submenu =new JMenu("字体颜色");//创建字体颜色子菜单 menu.add(submenu); ButtonGroup group1 =new ButtonGroup(); radioMenuItem =new JRadioButtonMenuItem("Black"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group1.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Green"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group1.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Cyan"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group1.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Red"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group1.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("LightGray"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group1.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Orange"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group1.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Pink"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group1.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Yellow"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group1.add(radioMenuItem); submenu =new JMenu("背景颜色");//创建背景颜色子菜单 menu.add(submenu); ButtonGroup group2 =new ButtonGroup(); radioMenuItem =new JRadioButtonMenuItem("black"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group2.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("green"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group2.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("cyan"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group2.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("red"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group2.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("lightGray"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group2.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("orange"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group2.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("pink"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group2.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("yellow"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group2.add(radioMenuItem); //弹出菜单 popupmenu =new JPopupMenu(); menuItem =new JMenuItem("新建",KeyEvent.VK_N); menuItem.addActionListener(al); popupmenu.add(menuItem); popupmenu.add(new JSeparator()); menuItem =new JMenuItem("剪切",KeyEvent.VK_C); menuItem.addActionListener(al); popupmenu.add(menuItem); menuItem =new JMenuItem("复制"); menuItem.addActionListener(al); popupmenu.add(menuItem); menuItem =new JMenuItem("粘贴",KeyEvent.VK_P); menuItem.addActionListener(al); popupmenu.add(menuItem); popupmenu.add(new JSeparator()); menuItem =new JMenuItem("全部选择",KeyEvent.VK_S); menuItem.addActionListener(al); popupmenu.add(menuItem); //设置文本区域 ta =new JTextArea(500,50); font =new Font("ch",+Font.PLAIN,18); ta.setFont(font); ta.setSelectedTextColor(Color.red); ta.setLineWrap(true); //设置边框滚动条 JScrollPane scrollpanel =new JScrollPane(ta,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); frame.getContentPane().add(scrollpanel,"Center"); ta.addMouseListener(ml); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(800,600); frame.setVisible(true); } 李惠竹 实现了各记事本的基本功能 //Eidt事件处理 if(menu.getActionCommand().equals("剪切")){ ta.cut(); } else if(menu.getActionCommand().equals("复制")){ ta.copy(); } else if(menu.getActionCommand().equals("粘贴")){ ta.paste(); } else if(menu.getActionCommand().equals("选择全部")){ ta.selectAll(); } else if(menu.getActionCommand().equals("清屏")){ ta.setText(""); } } }; ItemListener il =new ItemListener(){ public void itemStateChanged(ItemEvent e){ int state =e.getStateChange(); JMenuItem menuItem =(JMenuItem)e.getSource(); //自动换行事件处理 if(menuItem.getActionCommand().equals("自动换行")){ if(state==ItemEvent.SELECTED){ ta.setLineWrap(true); } else { ta.setLineWrap(false); } } //显示行数事件处理 else if(menuItem.getActionCommand().equals("显示行数")){//显示行数 if(state==ItemEvent.SELECTED){ File file =new File("c:\\temp.txt"); int rows =1; try{ FileOutputStream fout =new FileOutputStream(file); OutputStreamWriter out =new OutputStreamWriter(fout); ta.write(out); out.close(); }catch(FileNotFoundException fe){} catch(EOFException fe){} catch(IOException fe){} try{ FileInputStream fin =new FileInputStream(file); InputStreamReader in =new InputStreamReader(fin); BufferedReader reader =new BufferedReader(in); String s=reader.readLine(); ta.setText(rows+" "+s); while((s=reader.readLine())!=null){ rows++; ta.append("\n"+rows+" "+s); } in.close(); }catch(FileNotFoundException fe){} catch(EOFException fe){} catch(IOException fe){} file.delete(); } else { File file =new File("c:\\temp.txt"); try{ FileOutputStream fout =new FileOutputStream(file); OutputStreamWriter out =new OutputStreamWriter(fout); ta.write(out); out.close(); }catch(FileNotFoundException fe){} catch(EOFException fe){} catch(IOException fe){} try{ FileInputStream fin =new FileInputStream(file); InputStreamReader in =new InputStreamReader(fin); BufferedReader reader =new BufferedReader(in); String s1=reader.readLine(); String s2=new String(s1.toCharArray(),6,s1.length()-6); ta.setText(s2); while((s1=reader.readLine())!=null){ s2=new String(s1.toCharArray(),6,s1.length()-6); ta.append("\n"+s2); } in.close(); }catch(FileNotFoundException fe){} catch(EOFException fe){} catch(IOException fe){} file.delete(); } } //字体事件处理 else if(menuItem.getActionCommand().equals("Bold")){ if(state==ItemEvent.SELECTED){ font =new Font("ch",Font.BOLD,18); ta.setFont(font); } else { font =new Font("ch",Font.PLAIN,18); ta.setFont(font); } } else if(menuItem.getActionCommand().equals("Italic")){ if(state==ItemEvent.SELECTED){ font =new Font("ch",Font.ITALIC,18); ta.setFont(font); } else { font =new Font("ch",Font.PLAIN,18); ta.setFont(font); } } else if(menuItem.getActionCommand().equals("Plain")){ if(state==ItemEvent.SELECTED){ font =new Font("ch",Font.PLAIN,18); ta.setFont(font); } else { font =new Font("ch",Font.PLAIN,18); ta.setFont(font); } } else if(menuItem.getActionCommand().equals("Bold+Italic")){ if(state==ItemEvent.SELECTED){ font =new Font("ch",Font.BOLD+Font.ITALIC,18); ta.setFont(font); } else { font =new Font("ch",Font.PLAIN,18); ta.setFont(font); } } //字体颜色事件处理 else if(menuItem.getActionCommand().equals("Black")){ if(state==ItemEvent.SELECTED){ ta.setForeground(Color.black); } } else if(menuItem.getActionCommand().equals("Green")){ if(state==ItemEvent.SELECTED){ ta.setForeground(Color.green); } } else if(menuItem.getActionCommand().equals("Cyan")){ if(state==ItemEvent.SELECTED){ ta.setForeground(Color.cyan); } } else if(menuItem.getActionCommand().equals("Red")){ if(state==ItemEvent.SELECTED){ ta.setForeground(Color.red); } } else if(menuItem.getActionCommand().equals("LightGray")){ if(state==ItemEvent.SELECTED){ ta.setForeground(Color.lightGray); } } else if(menuItem.getActionCommand().equals("Orange")){ if(state==ItemEvent.SELECTED){ ta.setForeground(Color.orange); } } else if(menuItem.getActionCommand().equals("Pink")){ if(state==ItemEvent.SELECTED){ ta.setForeground(Color.pink); } } else if(menuItem.getActionCommand().equals("Yellow")){ if(state==ItemEvent.SELECTED){ ta.setForeground(Color.yellow); } } //背景颜色事件处理 else if(menuItem.getActionCommand().equals("black")){ if(state==ItemEvent.SELECTED){ ta.setBackground(Color.black); } } else if(menuItem.getActionCommand().equals("green")){ if(state==ItemEvent.SELECTED){ ta.setBackground(Color.green); } } else if(menuItem.getActionCommand().equals("cyan")){ if(state==ItemEvent.SELECTED){ ta.setBackground(Color.cyan); } } else if(menuItem.getActionCommand().equals("red")){ if(state==ItemEvent.SELECTED){ ta.setBackground(Color.red); } } else if(menuItem.getActionCommand().equals("lightGray")){ if(state==ItemEvent.SELECTED){ ta.setBackground(Color.lightGray); } } else if(menuItem.getActionCommand().equals("orange")){ if(state==ItemEvent.SELECTED){ ta.setBackground(Color.orange); } } else if(menuItem.getActionCommand().equals("pink")){ if(state==ItemEvent.SELECTED){ ta.setBackground(Color.pink); } } else if(menuItem.getActionCommand().equals("yellow")){ if(state==ItemEvent.SELECTED){ ta.setBackground(Color.yellow); } } } };
当你将一个类用作事件监听器时,你已经设置好一个特定的事件类型,它会用该类进行监听。接下来的操作是:一个匹配的监听器必须被加入到该组件中 组件被创建之后,可以在组件上调用如下方法来将监听器与它联系起来 addActionListener( ) 可用于 Button,Check, TexyField 等组件 addAdjustmentListener( ) 可用于 ScrollBar 组件 addFocusListener( ) 可用于所有可视化组件 addItemListener( ) 可用于 Button,CheckBox 等组件 addKeyListener( ) 可用于所有可视化组件 addMouseListener( ) 可用于所有可视化组件 addMouseMotionListener( ) 可用于所有可视化组件 addWindowsListener( ) 可用于 Window,Frame等组件 例:下面语句创建一个 Button 对象,并将它与动作事件监听器联系起来 Button button = new Button( “OK” ) ; button . addActionListener ( this ) ; //this 指明当前类就是事件监听器 2 使用方法 (1)动作事件(ActionEvent) 发生在用户完成了使用下列组件之一的动作: Button , CheckBox , ComboBox , TextField , RadioButton 类为了能够处理这些事件必须实现接口 ActionListener 。 每个产生一个动作事件的组件上要调用方法 addActionListener( ) 方法 actionPerformed(ActionEvent evt) 是接口 ActionListener 惟一的 方法采用如下格式: public void actionPerformed(ActionEvent evt) { //…… } 在 ActionEvent 对象上可以使用的方法: getSource( ) 获取产生事件组件的组件名 getActionCommand( ) 获取与组件有关的文本,如命令按钮的标签 键盘事件(KeyEvent) 发生在键盘上的某个键被按下时。 类为了能够处理这些事件必须实现接口 KeyListener 。 每个产生一个键盘事件的组件上要调用方法 addKeyListener( ) 在接口 KeyListener 中有三个方法: public void keyPressed(KeyEvent evt) { //…… } public void keyReleased(KeyEvent evt) { //…… } public void keyTyped(KeyEvent evt) { //…… } 在 KeyEvent 对象上可以使用的方法: getKeyChar( ) 返回与事件相关的键盘字符的 Unicode 码 . . . . . . . . . .

62,627

社区成员

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

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