swing 学习笔记七(菜单MenuBar )

/**
 * 菜单
 * 
 * @time 10:24:50 AM
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
public class Test_MentTest extends Frame {
private static final long serialVersionUID = 1L;
// 默认值
int n = 12;
String ko = "TimesRoman";
Color fColor = Color.red;
TextField textField = new TextField("TimeRoman");


/** ************************************************************* */
// 菜单工具条
MenuBar menuBar = new MenuBar();


// 菜单
Menu fontStyle = new Menu("字型"),//
fontSize = new Menu("字号"),//
fontColor = new Menu("颜色");//


// 菜单内容项
CheckboxMenuItem fStyle1 = new CheckboxMenuItem("TimesRoman"),//
fStyle2 = new CheckboxMenuItem("Courier"),//
fStyle3 = new CheckboxMenuItem("Helvetica"),//
fSize1 = new CheckboxMenuItem("10"),//
fSize2 = new CheckboxMenuItem("15"),//
fSize3 = new CheckboxMenuItem("20"),//
fColor1 = new CheckboxMenuItem("红色"),//
fColor2 = new CheckboxMenuItem("绿色"),//
fColor3 = new CheckboxMenuItem("蓝色");//


/** *****鼠标右键弹出菜单************************************************** */
// 弹出式菜单
PopupMenu popupMenu = new PopupMenu();


// 弹出菜单项
MenuItem pp1, pp2, pp3;


/**
* 构造器
*/
private Test_MentTest() {
super("Test_MentTest");


setLayout(new FlowLayout()); // 流布局
setBackground(Color.orange);


// 添加菜单容项
fontStyle.add(fStyle1);
fontStyle.add(fStyle2);
fontStyle.add(fStyle3);
fontSize.add(fSize1);
fontSize.add(fSize2);
fontSize.add(fSize3);
fontColor.add(fColor1);
fontColor.add(fColor2);
fontColor.add(fColor3);


menuBar.add(fontStyle);
menuBar.add(fontSize);
menuBar.add(fontColor);


//  
setMenuBar(menuBar);


popupMenu.add(pp1 = new MenuItem("灰色"));
pp1.addActionListener(new koActionListener());
popupMenu.add(pp2 = new MenuItem("青色"));
pp2.addActionListener(new koActionListener());
popupMenu.add(pp3 = new MenuItem("黄色"));
pp3.addActionListener(new koActionListener());


add(textField);
add(popupMenu);
// 设置鼠标事件
enableEvents(AWTEvent.MOUSE_EVENT_MASK);


// 初始化设置
fSize1.setState(true);
fColor1.setState(true);
setSize(200, 180);
setVisible(true);
addWindowListener(new koWindowListener());


// 菜单项添加监听
fStyle1.addItemListener(new koItemListener());
fStyle2.addItemListener(new koItemListener());
fStyle3.addItemListener(new koItemListener());
fSize1.addItemListener(new koItemListener());
fSize2.addItemListener(new koItemListener());
fSize3.addItemListener(new koItemListener());
fColor1.addItemListener(new koItemListener());
fColor2.addItemListener(new koItemListener());
fColor3.addItemListener(new koItemListener());
}


/**
* 应用入口

* @param args
*/
public static void main(String[] args) {
new Test_MentTest();
}


/**
* 自定义弹出菜单的单击监听
*/
class koActionListener implements ActionListener {


public void actionPerformed(ActionEvent e) {
if (e.getSource() == pp1) {
textField.setBackground(Color.gray);
} else if (e.getSource() == pp2) {
textField.setBackground(Color.cyan);
} else if (e.getSource() == pp3) {
textField.setBackground(Color.yellow);
}
}
}


/**
* 自定义菜单选项监听
*/
class koItemListener implements ItemListener {


public void itemStateChanged(ItemEvent e) {
if (e.getItemSelectable() == fStyle1) {
ko = fStyle1.getLabel();
fStyle2.setState(false);
fStyle3.setState(false);
}
if (e.getItemSelectable() == fStyle2) {
ko = fStyle2.getLabel();
fStyle1.setState(false);
fStyle3.setState(false);
}
if (e.getItemSelectable() == fStyle3) {
ko = fStyle3.getLabel();
fStyle1.setState(false);
fStyle2.setState(false);
}


if (e.getItemSelectable() == fSize1) {
n = Integer.parseInt(fSize1.getLabel());
fSize2.setState(false);
fSize3.setState(false);
}
if (e.getItemSelectable() == fSize2) {
n = Integer.parseInt(fSize2.getLabel());
fSize1.setState(false);
fSize3.setState(false);
}
if (e.getItemSelectable() == fSize3) {
n = Integer.parseInt(fSize3.getLabel());
fSize1.setState(false);
fSize2.setState(false);
}


if (e.getItemSelectable() == fColor1) {
fColor = Color.red;
fColor2.setState(false);
fColor3.setState(false);
}
if (e.getItemSelectable() == fColor2) {
fColor = Color.green;
fColor1.setState(false);
fColor3.setState(false);
}
if (e.getItemSelectable() == fColor3) {
fColor = Color.blue;
fColor1.setState(false);
fColor2.setState(false);
}
textField.setFont(new Font(ko, Font.PLAIN, n));
textField.setForeground(fColor);
textField.setText(ko);
}


}


/**
* 鼠标响应事件
*/
@Override
protected void processMouseEvent(MouseEvent e) {
// 是否为此平台的鼠标弹出事件
if (e.isPopupTrigger()) {
popupMenu.show(e.getComponent(), e.getX(), e.getY());
}
}


}


/**
 * 自定义关闭窗体监听
 */
class koWindowListener extends WindowAdapter {


@Override
public void windowClosing(WindowEvent e) {
// 释放资源
e.getWindow().dispose();
System.exit(0);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值