请问java如何实现多个标题栏的下拉菜单?
比如Test下面的下拉菜单怎么做??
比如Test下面的下拉菜单怎么做??
答案:你的意思是建2级子菜单哦 java中添加子菜单的语句是这么写的: import java.awt.*; import java.awt.event.*; import java.io.*; public class TestWindow extends Frame implements ActionListener { TextArea ta; Button b1,b2; Dialog md; MenuItem open,save,myexit,open1,save1; MenuItem copy,palse; CheckboxMenuItem bold,ita; MenuBar mb; PopupMenu popm; public void createmenu() { mb=new MenuBar(); Menu m1=new Menu("文件"); Menu m2=new Menu("编辑"); Menu m3=new Menu("字体"); mb.add(m1);mb.add(m2);m2.add(m3); open=new MenuItem("打开"); open.addActionListener(this); save=new MenuItem("保存"); myexit=new MenuItem("退出"); m1.add(open);m1.add(save);m1.add(myexit); copy=new MenuItem("复制"); palse=new MenuItem("粘贴"); bold=new CheckboxMenuItem("加粗"); ita=new CheckboxMenuItem("倾斜"); m2.add(copy);m2.add(palse); m3.add(bold);m3.add(ita); popm=new PopupMenu (); open1=new MenuItem("打开"); open1.addActionListener(this); save1=new MenuItem("保存"); popm.add(open1);popm.add(save1); ta.add(popm); ta.addMouseListener(new MyMouseEvent(this)); } class MyMouseEvent extends MouseAdapter { TestWindow myparentFrame; MyMouseEvent ( TestWindow m) { myparentFrame=m; } public void mouseReleased(MouseEvent e) { if(e.isPopupTrigger()) myparentFrame.popm.show((Component)e.getSource(),e.getX(),e.getY()); } } public TestWindow () { addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } }); ta=new TextArea(10,30); b1=new Button("弹出对话框"); b2=new Button("隐藏对话框"); b1.addActionListener(this); b2.addActionListener(this); add(ta,BorderLayout.CENTER); Panel p1=new Panel(); p1.add(b1); p1.add(b2); add(p1,BorderLayout.SOUTH); setVisible(true); setSize(400,300); md=new Dialog(this,"对话框"); md.add(new Label("这是一个对话框")); md.setSize(100,60); md.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { md.setVisible(false); } }); pack(); createmenu(); setMenuBar(mb); } public void actionPerformed(ActionEvent e) { if(e.getSource()==b1) md.setVisible(true); if(e.getSource()==b2) md.setVisible(false); if(e.getActionCommand()=="打开") try{ openfile();}catch(IOException ex){} } public void openfile() throws IOException { FileDialog fd=new FileDialog(this,"aaa",FileDialog.LOAD); fd.setVisible(true); FileInputStream fis=new FileInputStream( fd.getDirectory()+fd.getFile()); String s=""; int n=0; while((n=fis.read())!=-1) ta.append(""+(char)n); fis.close(); } public static void main(String []args) { TestWindow tw=new TestWindow(); } }import java.awt.*;
import javax.swing.*;
public class textdemo extends JFrame{
JTextArea jta=new JTextArea();
JLabel jlb=new JLabel();
public textdemo(){
JMenuBar jmb=new JMenuBar();
setJMenuBar(jmb);
JMenu jm1=new JMenu("文件(F)");
jm1.setMnemonic('F');
JMenuItem jm11=new JMenuItem("新建(N)");
jm11.setMnemonic('N');
JMenuItem jm12=new JMenuItem("打开(O)");
jm12.setMnemonic('O');
JMenuItem jm13=new JMenuItem("保存(S)");
jm13.setMnemonic('S');
JMenuItem jm14=new JMenuItem("另存为(N)");
jm14.setMnemonic('N');
JMenuItem jm15=new JMenuItem("页面设置(U)");
jm15.setMnemonic('U');
JMenuItem jm16=new JMenuItem("打印(P)");
jm16.setMnemonic('P');
JMenuItem jm17=new JMenuItem("退出(X)");
jm17.setMnemonic('X');
jm1.add(jm11);
jm1.add(jm12);
jm1.add(jm13);
jm1.add(jm14);
jm1.addSeparator();
jm1.add(jm15);
jm1.add(jm16);
jm1.addSeparator();
jm1.add(jm17);
JMenu jm2=new JMenu("编辑(E)");
jm1.setMnemonic('E');//热键
MenuItem jm21=new JMenuItem("撤销(U)");
jm21.setMnemonic('U');
JMenuItem jm22=new JMenuItem("剪切(T)");
jm22.setMnemonic('T');
JMenuItem jm23=new JMenuItem("复制(C)");
jm23.setMnemonic('C');
JMenuItem jm24=new JMenuItem("粘贴(P)");
jm24.setMnemonic('P');
JMenuItem jm25=new JMenuItem("删除(L)");
jm25.setMnemonic('L');
JMenuItem jm26=new JMenuItem("查找(F)");
jm26.setMnemonic('F');
JMenuItem jm27=new JMenuItem("查找下一个(N)");
jm27.setMnemonic('N');
JMenuItem jm28=new JMenuItem("替换(R)");
jm28.setMnemonic('R');
JMenuItem jm29=new JMenuItem("转到(G)");
jm29.setMnemonic('G');
JMenuItem jm30=new JMenuItem("全选(A)");
jm30.setMnemonic('A');
JMenuItem jm31=new JMenuItem("日期/时间(D)");
jm31.setMnemonic('D');
jm2.add(jm21);
jm2.addSeparator();
jm2.add(jm22);
jm2.add(jm23);
jm2.add(jm24);
jm2.add(jm25);
jm2.addSeparator();
jm2.add(jm26);
jm2.add(jm27);
jm2.add(jm28);
jm2.add(jm29);
jm2.addSeparator();
jm2.add(jm30);
jm2.add(jm31);
JMenu jm3=new JMenu("格式(O)");
jm3.setMnemonic('0');
JMenuItem jm311=new JMenuItem("自动换行(W)");
jm311.setMnemonic('W');
JMenu jm312=new JMenu("字体(F)");
jm312.add(new JMenuItem("宋体"));
jm312.add(new JMenuItem("楷体"));
jm312.setMnemonic('F');
jm3.add(jm311);
jm3.add(jm312);
JMenu jm4=new JMenu("查看(V)");
jm4.setMnemonic('V');
JMenuItem jm41=new JMenuItem("状态栏(S)");
jm41.setMnemonic('S');
jm4.add(jm41);
JMenu jm5=new JMenu("帮助(H)");
jm5.setMnemonic('H');
JMenuItem jm51=new JMenuItem("帮助主题(H)");
jm5.setMnemonic('H');
JMenuItem jm52=new JMenuItem("关于记事本(A)");
jm5.setMnemonic('A');
jm5.add(jm51);
jm5.addSeparator();
jm5.add(jm52);
jmb.add(jm1);
jmb.add(jm2);
jmb.add(jm3);
jmb.add(jm4);
jmb.add(jm5);
add(jta,BorderLayout.CENTER);
setSize(700,700);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("记事本");
}
public static void main(String[] args){
try{
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}catch(Exception e){}//显示样式为本机平台样式
textdemo td = new textdemo();
}
}
首先分级理解1级为菜单栏JMenuBar2级为菜单JMenu
3级为菜单项JMenuItem
2级对应(文件,编辑,格式,查看,帮助)
3级对应(新建,打开,保存,另存为等)
因为格式的字体下面还有菜单项,所以字体应定义为2级而非3级。
其他菜单项下增加菜单项只需升级即可级定义时修改类型JMenuItem为JMenu.
可以建立数组类,然后定义对象方便。
看看SWING包有没有相关的控件类