练习58

来源:互联网 发布:c语言全集 编辑:程序博客网 时间:2024/04/30 10:20

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

//该类作为事件监听者,需要实现对应的ItemListener接口

public class JCheckBoxDemo extends JFrame implements ItemListener {

private JLabel lb1; // 作为调色板,根据所选颜色不同它的颜色随之变化

private JCheckBox ckb1, ckb2, ckb3; // 代表红、绿、蓝三色是否选中的复选框

private Container container;

int red = 0, green = 0, blue = 0; // 三种颜色分量的值

public JCheckBoxDemo() {

container = this.getContentPane();

ckb1 = new JCheckBox("红色"); // 创建复选框对象,字符串为提示信息

ckb2 = new JCheckBox("绿色");

ckb3 = new JCheckBox("蓝色");

lb1 = new JLabel(); // 创建空标签作为调色板

lb1.setMaximumSize(new Dimension(150, 200)); // 设置尺寸

container.add(lb1, BorderLayout.CENTER); // 把组件添加到窗口上

JPanel p1 = new JPanel();

p1.add(ckb1);

p1.add(ckb2);

p1.add(ckb3);

// 为组件注册事件监听程序,对ItemEvent事件进行处理

ckb1.addItemListener(this);

ckb2.addItemListener(this);

ckb3.addItemListener(this);

container.add(p1, BorderLayout.SOUTH);

// 为窗口注册窗口事件监听程序,监听器以匿名类的形式进行

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭窗口时退出系统

this.setTitle("图书管理系统JCheckBox示例");

this.setSize(600, 450);

this.setVisible(true);

}

// ItemListener接口中方法的实现按钮的状态发生改变时该方法将会被调用

public void itemStateChanged(ItemEvent e) {

if ((JCheckBox) e.getItem() == ckb1) // 判断事件源

if (e.getStateChange() == e.SELECTED) // 判断组件到

底有没有被选中

red = 255;

else

red = 0;

if ((JCheckBox) e.getItem() == ckb2)

if (ckb2.isSelected()) //判断组件是否选中,选中为true否则为false

green = 255;

else

green = 0;

if ((JCheckBox) e.getSource() == ckb3)

if (e.getStateChange() == e.SELECTED)

blue = 255;

else

blue = 0;

lb1.setOpaque(true);// 设置标签为不透明,使标签的颜色显示出来

lb1.setBackground(new Color(red, green, blue));// 设置标签的背景颜色

}

public static void main(String[] arg) {

new JCheckBoxDemo();

}

}

原创粉丝点击