Java编程,如何将菜单放入一个类中由主程序(类)调用的写法,求解。谢谢!
下面是我的一个程序,打开后一个窗体和菜单,如果将菜单放入单独的一个类中,如MenuBar,将如何写,在主程序中如何调用。packagecom.ccs;importjava...
下面是我的一个程序,打开后一个窗体和菜单,如果将菜单放入单独的一个类中,如MenuBar,将如何写,在主程序中如何调用。
package com.ccs;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
import com.ccs.MainFrame;
public class MainFrame extends JFrame {
private static final long serialVersionUID = 1L;
/**
* This is the default constructor
*/
public MainFrame() {
super();
initialize(); //初始化窗体
setVisible(true);//直接设置 主窗体可见。不用登陆窗体
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
JMenuBar menubar;
MainFrame myMenu = null;
JMenu file;
JMenu edit, help, subedit;
JMenuItem f1, f2, f3, f4, e2, e3, e4, se1;
JMenuItem e1;
PopupMenu popm = new PopupMenu("编辑");
menubar = new JMenuBar();
setJMenuBar(menubar);
file = new JMenu("文件");
edit = new JMenu("编辑");
help = new JMenu("帮助");
subedit = new JMenu("二级菜单");
menubar.add(file);
menubar.add(edit);
menubar.add(help);
e1 = new JMenuItem("copy");
//e1.setShortcut(new JMenuShortcut(KeyEvent.VK_C));
e2 = new JMenuItem("-");
e3 = new JMenuItem("cut");
se1 = new JMenuItem("s");
edit.add(e1);
edit.add(e2);
edit.add(e3);
subedit.add(se1);
edit.add(subedit);
//popm.add(e1);
add(popm);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
addMouseListener(new MouseAdapter() {
public void pmshow(int x, int y) {
popm.show(myMenu, x, y);
}
public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
pmshow(e.getX(), e.getY());
}
}
});
setSize(800, 600); // 设置窗体大小
//设置窗口居中
int w = (Toolkit.getDefaultToolkit().getScreenSize().width - WIDTH ) / 2;
int h = (Toolkit.getDefaultToolkit().getScreenSize().height - HEIGHT) / 2;
setLocation(w-400, h-300);
setDefaultCloseOperation(MainFrame.EXIT_ON_CLOSE);
this.setLayout(new BorderLayout());
//this.setSize(800, 400);
this.setTitle("管理系统");
this.setIconImage(Toolkit.getDefaultToolkit().createImage("../cs/src/res/yb1.gif"));
//放置窗口图标,注意相对路径的写法。
}
public static void main(String[] args) {
//myMenu =new MyMenu("");
new MainFrame();
//new MyMenu().init();
}
}
将下面内容放入一个MenuBar类中,主程序(类)如何调用。
JMenuBar menubar;
MainFrame myMenu = null;
JMenu file;
JMenu edit, help, subedit;
JMenuItem f1, f2, f3, f4, e2, e3, e4, se1;
JMenuItem e1;
PopupMenu popm = new PopupMenu("编辑");
。。。。。。。。
}
public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
pmshow(e.getX(), e.getY());
}
}
}); 展开
package com.ccs;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
import com.ccs.MainFrame;
public class MainFrame extends JFrame {
private static final long serialVersionUID = 1L;
/**
* This is the default constructor
*/
public MainFrame() {
super();
initialize(); //初始化窗体
setVisible(true);//直接设置 主窗体可见。不用登陆窗体
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
JMenuBar menubar;
MainFrame myMenu = null;
JMenu file;
JMenu edit, help, subedit;
JMenuItem f1, f2, f3, f4, e2, e3, e4, se1;
JMenuItem e1;
PopupMenu popm = new PopupMenu("编辑");
menubar = new JMenuBar();
setJMenuBar(menubar);
file = new JMenu("文件");
edit = new JMenu("编辑");
help = new JMenu("帮助");
subedit = new JMenu("二级菜单");
menubar.add(file);
menubar.add(edit);
menubar.add(help);
e1 = new JMenuItem("copy");
//e1.setShortcut(new JMenuShortcut(KeyEvent.VK_C));
e2 = new JMenuItem("-");
e3 = new JMenuItem("cut");
se1 = new JMenuItem("s");
edit.add(e1);
edit.add(e2);
edit.add(e3);
subedit.add(se1);
edit.add(subedit);
//popm.add(e1);
add(popm);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
addMouseListener(new MouseAdapter() {
public void pmshow(int x, int y) {
popm.show(myMenu, x, y);
}
public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
pmshow(e.getX(), e.getY());
}
}
});
setSize(800, 600); // 设置窗体大小
//设置窗口居中
int w = (Toolkit.getDefaultToolkit().getScreenSize().width - WIDTH ) / 2;
int h = (Toolkit.getDefaultToolkit().getScreenSize().height - HEIGHT) / 2;
setLocation(w-400, h-300);
setDefaultCloseOperation(MainFrame.EXIT_ON_CLOSE);
this.setLayout(new BorderLayout());
//this.setSize(800, 400);
this.setTitle("管理系统");
this.setIconImage(Toolkit.getDefaultToolkit().createImage("../cs/src/res/yb1.gif"));
//放置窗口图标,注意相对路径的写法。
}
public static void main(String[] args) {
//myMenu =new MyMenu("");
new MainFrame();
//new MyMenu().init();
}
}
将下面内容放入一个MenuBar类中,主程序(类)如何调用。
JMenuBar menubar;
MainFrame myMenu = null;
JMenu file;
JMenu edit, help, subedit;
JMenuItem f1, f2, f3, f4, e2, e3, e4, se1;
JMenuItem e1;
PopupMenu popm = new PopupMenu("编辑");
。。。。。。。。
}
public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
pmshow(e.getX(), e.getY());
}
}
}); 展开
1个回答
展开全部
首先明确你要写的MenuBar类怎么写,看看上面的代码比较混杂,上面看到想要加入还有JFrame类的属性,比较不科学,基本逻辑是先有Frame,在Frame上添加菜单栏,在菜单栏上添加菜单,将Frame,菜单栏,菜单几种不同的部件分成模块,这样才好分离出每个部件的代码。
追问
能给个例子吗?主要是这几个模块如何去关联,怎么调用。谢谢。
我就是想设计成您说的那样的,有Fram主模块,菜单栏模块(类),菜单(类),在同一个包里,就不知道如何关联,如何调用。
追答
这是一个简单的示范,仅供参考,简单的模块分离
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询