重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
给你个小例子,已经添加注释了。自己运行下看看效果,满意的话记得结贴子!
成都创新互联公司提供高防服务器、云服务器、香港服务器、德阳电信服务器托管等
import java.awt.BorderLayout;
import java.awt.CheckboxMenuItem;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestMenu extends Frame implements ActionListener{
TextArea ta; //文本区
MenuBar mb; //MenuBar 类封装绑定到框架的菜单栏的
Menu mnFile,mnEdit,mnFormat,mnHelp; //从菜单栏部署的下拉式菜单组件
MenuItem miNew,miOpen,miSave,miSaveAs,miExit,miFont; //菜单中的所有项必须属于类 MenuItem 或其子类之一
CheckboxMenuItem miBinary; //一个可包括在菜单中的复选框
public TestMenu(){
super("记事本"); //调用父类构造方法
ta = new TextArea("",20,20); //新建文本区,第一个参数是默认文本,第二个参数是行数,第三个是列数
/*
* BorderLayout边框布局
* 添加文本区到Frame,BorderLayout.CENTER是居中位置
* */
add(ta,BorderLayout.CENTER);
mb = new MenuBar(); //创建菜单栏对象
/*
* 创建菜单,指定菜单名
* */
mnFile= new Menu("文件");
mnEdit= new Menu("编辑");
mnFormat= new Menu("格式");
mnHelp= new Menu("帮助");
/*
* 创建子菜单,并指定名称
* */
miNew= new MenuItem("新建");
miOpen= new MenuItem("打开");
miSave= new MenuItem("保存");
miSaveAs= new MenuItem("另存为");
miExit= new MenuItem("退出");
miExit.addActionListener(this); //为退出菜单添加监听
/*
* 添加上面创建的子菜单到文件菜单下
* */
mnFile.add(miNew);
mnFile.add(miOpen);
mnFile.add(miSave);
mnFile.add(miSaveAs);
mnFile.addSeparator(); //将一个分隔线或连字符添加到菜单的当前位置
mnFile.add(miExit);
miBinary= new CheckboxMenuItem("二进制"); //创建在复选框的子菜单
miFont= new MenuItem("字体"); //创建子菜单
/*
* 添加miBinary、miFont两个子菜单到mnFormat(格式)下
* */
mnFormat.add(miBinary);
mnFormat.add(miFont);
/*
* 将文件、编辑、格式、帮助添加到菜单栏
* */
mb.add(mnFile);
mb.add(mnEdit);
mb.add(mnFormat);
mb.add(mnHelp);
setMenuBar(mb); //添加菜单栏到Frame
/*
* 关闭窗口时,关闭运行成语
* */
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String args[]){
TestMenu tm=new TestMenu();
tm.setSize(300,200); //设置窗体的宽、高
tm.setLocation(300,100); //将组件移到新位置Component类方法
tm.setVisible(true); //设置显示窗体,true为显示,false为隐藏
}
/**
* 监听事件,实现ActionListener接口的actionPerformed方法
*/
public void actionPerformed(ActionEvent e){
String s = e.getActionCommand(); //获取选中菜单的名称
System.out.println(s);
if(s.equals("退出")){
System.exit(0); //停止运行程序
}
}
}
试试这样行不?
public class Mazelp {/*extends JFrame*/ //implements ActionListener{
private static final int wid = 10;
private static final int hei = 10;
JFrame jf;
JButton jb1,jb2;
JButton jb[];
JPanel p1,p2;
private Stack stack = new Stack();//Stack 类表示后进先出(LIFO)的对象堆栈。
MenuBar menu;
Menu file;
MenuItem closeMenu;
public Mazelp() {
jf=new JFrame("迷宫");//申请内存空间设置标题
jf.setBounds(300,240,500,500); //调整迷宫出现的位置(300,240)及大小(500,500)
jf.setResizable(false);//窗体不可拉伸
menu = new MenuBar();//设置菜单条
file = new Menu("文件");//设置菜单栏
closeMenu = new MenuItem("关闭");//设置菜单项
//closeMenu.addActionListener(this);//添加监听对菜单项
p1=new JPanel();
//jf.add(menu);
jf.setMenuBar(menu);
menu.add(file);//将菜单栏添加到菜单条上
file.add(closeMenu);//将菜单项添加到菜单栏
jf.getContentPane().add(p1);
p1.setLayout(new GridLayout(10,10)); //p1用网格布局,10行10列
jb=new JButton[100];//作为迷宫的墙和路
for(int i=0;ijb.length;i++){
jb[i]=new JButton(Integer.toString(i));//创建按键的名字,Integer型的名字为i的字符串
if((i=0i=9)||(i=90i=99)||i%10==0||i%10==9||i==13||i==17||i==23||i==27||i==35||i==36||i==42||i==43||i==44||i==54||i==62||i==66||i==72||i==73||i==74||i==76||i==77||i==81){
jb[i].setBackground(Color.red);//将墙涂色
}
else {
jb[i].setBackground(Color.yellow);
}
jb[i].setSize(10,10);
p1.add(jb[i]);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE); //声明点“X”图标后结束窗体所在的应用程序
jf.setVisible(true); //表明以上创建的所有窗体、按键等组件都是可见
}
}
这不简单吗,直接循环加上去就可以了。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class List extends JFrame{
public List(){
initialization();
setTitle("三级菜单");
setBounds(300,300,400,300);
setLayout(null);
Container c=getContentPane();
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public void initialization(){
JMenu jmenuTwo=null;
String[] menubar={"编辑","帮助"};
String[][] submenu={{"复制","粘贴","","历史记录"},{"关于三级菜单"}};
String[] threemenu={"撤消","恢复"};
JMenuBar jmenubar=new JMenuBar();//创建菜单栏
for(int i=0;imenubar.length;i++){
JMenu jmenu=new JMenu(menubar[i]);
jmenubar.add(jmenu);
for(int j=0;jsubmenu[i].length;j++){
if("".equals(submenu[i][j])){
jmenu.addSeparator();//添加一条横线
}else{
jmenuTwo=new JMenu(submenu[i][j]);
jmenu.add(jmenuTwo);
if(j2i==0){
for(int k=0;kthreemenu.length;k++){
JMenuItem menu3=new JMenuItem(threemenu[k]);
jmenuTwo.add(menu3);
}
}
}
}
this.setJMenuBar(jmenubar);//JFrame加菜单栏时用setJmenuBar(),不用add /
}
}
public static void main(String[] args){
new List();
}
}
“关于计算器”这个非常简单呀,首先在菜单栏上添加“关于计算器”这项MenuItem,然后添加监听,功能是点击后菜单之后new 一下这个“关于计算器”的新窗口不就可以了么?新窗口放一个单独的类写,至于那里面想写什么就写什么,随意了,简单介绍,作者什么的,既然都能写出计算器的界面了,这个应该不是什么问题。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyMenu extends JFrame{
JMenuBar jmbar=new JMenuBar();
JMenu jmenu=new JMenu("颜色");
JMenuItem jmt1=new JMenuItem("红色"),
jmt2=new JMenuItem("黄色"),
jmt3=new JMenuItem("蓝色");
JPanel jp=new JPanel();
MyMenu(){
setTitle("菜单测试");
setSize(400,300);
setJMenuBar(jmbar);
jmbar.add(jmenu);
jmenu.add(jmt1);
jmenu.add(jmt2);
jmenu.add(jmt3);
add(jp);
jmt1.addActionListener(new MenuAction(this));
jmt2.addActionListener(new MenuAction(this));
jmt3.addActionListener(new MenuAction(this));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new MyMenu();
}
}
class MenuAction implements ActionListener{
MyMenu m;
MenuAction(MyMenu m){
this.m=m;
}
public void actionPerformed(ActionEvent e){
String color=e.getActionCommand();
if(color=="红色")m.jp.setBackground(Color.red);
else if(color=="黄色")m.jp.setBackground(Color.yellow);
else if(color=="蓝色")m.jp.setBackground(Color.blue);
}
}
不知道你要什么事件代码,我写了个比较简单的你看适合不。