关于JMenuBAr,JMenu,JMenuItem,JList,JComboBox

最近想构建多级菜单,并且在多级菜单里面添加下拉列表,所遇到的问题!

菜单栏JMenuBar    菜单JMenu   菜单项JMenuItem   组件Component

A:对于构建多级菜单的认识:

                  一个窗体里只能添加一个 JMenuBar

                   可以使用 JMenu  添加  JMenu 构建多级菜单。

                  不能使用 JMenuItem 添加任何 Component,否者添加 Component的 JMenuItem 将会消失在。

B:关于JMenu,JMenuItem,JList,JComboBox:
                 Jmenu添加JList,使用相对应的ListSelectionListener监听有效
                  JMenu添加JComboBox,使用相对应的ItemStateChange监听无效


关于记事本代码如下:

import java.awt.BorderLayout;
import java.awt.Font;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.io.*;
import java.util.Scanner;
class Note implements ActionListener{
private JFrame frame =new JFrame("狼子记事本");
private JMenuBar menuBar =new JMenuBar();
private JMenu menuFont=new JMenu("字体");
private JMenu menuSize=new JMenu("字体大小");
private JList<String> box=null;
private JMenu menuFile=new JMenu("文件");
private JMenuItem open=new JMenuItem("打开文件");
private JMenuItem save=new JMenuItem("保存文件");
private JLabel label=new JLabel("langzi");
private JTextArea text=new JTextArea(30,30);
private String str[]={"10","15","20","25","30","30","40","45","50","55","60","65","70","75","80","85","90"};
public Note() {
open.addActionListener(this);                   
save.addActionListener(this);
box=new JList<String>(str);


menuBar.add(menuFont);                          //构建多级菜单
menuBar.add(menuFile);
menuFont.add( menuSize);
menuSize.add(box);
menuFile.add(open);
menuFile.add(save);


frame.setJMenuBar(menuBar);                       //构建窗体
frame.setLayout(new BorderLayout());
frame.add(label,BorderLayout.NORTH);
frame.add(new JScrollPane(text),BorderLayout.CENTER);
frame.setVisible(true);
frame.pack();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(1);
}
});
box.addListSelectionListener(new ListSelectionListener() {      //字体大小监听
public void valueChanged(ListSelectionEvent e) {
int size=15;
int temp=box.getSelectedIndex();
String str=(String)box.getModel().getElementAt(temp);       
size =Integer.parseInt(str);
changeSize(size);
}
});

}
public void changeSize(int size){                              //字体改变的方法
Font font=new Font("1001",Font.BOLD,size);
this.label.setFont(font);
this.text.setFont(font);
}
public void actionPerformed(ActionEvent e){
int result=0;
File file=null;
if(e.getSource()==open){                                     //文件打开监听
JFileChooser fileChooser=new JFileChooser();
result=fileChooser.showOpenDialog(this.frame);
if(result==JFileChooser.APPROVE_OPTION){
text.setText("");
file=fileChooser.getSelectedFile();
label.setText("打开的文件名为"+file.getName());
}else if(result==JFileChooser.CANCEL_OPTION){
label.setText("langzi");
}else{
label.setText("文件操作有误");
}
if(file!=null){
try{
Scanner scan=new Scanner(new FileInputStream(file));
scan.useDelimiter("\n");
while(scan.hasNext()){
text.append(scan.next()+"\n");
}
scan.close();
}catch(Exception ee){
label.setText("文件读取失败");
}



}
}


if(e.getSource()==save){                                //文件保存监听
JFileChooser fileChooser=new JFileChooser();
result=fileChooser.showSaveDialog(this.frame);
if(result==JFileChooser.APPROVE_OPTION){
file=fileChooser.getSelectedFile();
label.setText("保存的路径为 "+file.getPath());
}else if(result==JFileChooser.CANCEL_OPTION){
label.setText("langzi");
}else{
label.setText("文件操作有误");
}
if(file!=null){
try{
PrintStream out=new PrintStream(new FileOutputStream(file));
out.print(text.getText());
out.close();
}catch(Exception ee){
label.setText("文件保存失败");
}
}

}
}

}
public class R5{
public static void main(String args[]){
new Note();

}
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值