1、创建如下下拉式菜单“定制个性化菜单”(教材P428例23.7)
代码:
package MyMenu;
import javax.swing.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
public class MyMenuBar {
JFrame f;
JPanel p;
ButtonGroup buttonGroup;
JMenuBar menuBar;
JMenu fileMenu,openMenu,fontMenu,editMenu,attributeMenu,help;
JMenuItem newItem,openNewItem,openClosedItem,preserve,exit,cut,paste,copy;
JCheckBoxMenuItem bCheckBoxItem,iCheckBoxItem;
JRadioButtonMenuItem rRadioButtonItem,eRadioButtonItem;
public MyMenuBar() {
f=new JFrame("定制个性化菜单");
menuBar=new JMenuBar();
buttonGroup=new ButtonGroup();
fileMenu=new JMenu("文件(F)");
editMenu=new JMenu("编辑(E)");
openMenu=new JMenu("打开(O)");
help=new JMenu("帮助(H)");
fontMenu=new JMenu("字体(F)");
attributeMenu=new JMenu("属性(A)");
newItem=new JMenuItem("新建(N)");
openNewItem=new JMenuItem("未打开过的(N)");
openClosedItem=new JMenuItem("刚打开过的(C)");
preserve=new JMenuItem("保存(S)");
exit=new JMenuItem("退出(E)");
cut=new JMenuItem("剪切(T)");
copy=new JMenuItem("复制(C)");
paste=new JMenuItem("粘贴(P)");
rRadioButtonItem=new JRadioButtonMenuItem("只读(R)");
eRadioButtonItem=new JRadioButtonMenuItem("编辑(E)");
bCheckBoxItem=new JCheckBoxMenuItem("加粗(B)");
iCheckBoxItem=new JCheckBoxMenuItem("斜体(I)");
//窗体设置
f.setVisible(true);
f.setBounds(500, 200, 500, 400);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setJMenuBar(menuBar);
//设置快捷键与加速器
fileMenu.setMnemonic('F');
newItem.setMnemonic('N');
newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));
editMenu.setMnemonic('E');
openMenu.setMnemonic('O');
openNewItem.setMnemonic('N');
openNewItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK|InputEvent.ALT_MASK));
openClosedItem.setMnemonic('C');
openClosedItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK|InputEvent.ALT_MASK));
fontMenu.setMnemonic('F');
bCheckBoxItem.setMnemonic('B');
bCheckBoxItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,InputEvent.CTRL_MASK|InputEvent.ALT_MASK));
iCheckBoxItem.setMnemonic('I');
iCheckBoxItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I,InputEvent.CTRL_MASK|InputEvent.ALT_MASK));
attributeMenu.setMnemonic('A');
rRadioButtonItem.setMnemonic('R');
rRadioButtonItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_MASK|InputEvent.ALT_MASK));
eRadioButtonItem.setMnemonic('E');
eRadioButtonItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK|InputEvent.ALT_MASK));
preserve.setMnemonic('S');
preserve.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
exit.setMnemonic('E');
exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_MASK));
cut.setMnemonic('T');
cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_MASK));
copy.setMnemonic('C');
copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));
paste.setMnemonic('P');
paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK));
//添加组件文件
menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(help);
fileMenu.add(newItem);
fileMenu.add(openMenu);
fileMenu.addSeparator();
fileMenu.add(preserve);
fileMenu.addSeparator();
fileMenu.add(exit);
openMenu.add(openNewItem);
openMenu.add(openClosedItem);
openClosedItem.setEnabled(false);
//编辑
editMenu.add(cut);
editMenu.add(copy);
editMenu.addSeparator();
editMenu.add(paste);
editMenu.add(fontMenu);
editMenu.addSeparator();
editMenu.add(attributeMenu);
fontMenu.add(bCheckBoxItem);
fontMenu.add(iCheckBoxItem);
buttonGroup.add(rRadioButtonItem);
attributeMenu.add(rRadioButtonItem);
rRadioButtonItem.setSelected(true);
buttonGroup.add(eRadioButtonItem);
attributeMenu.add(eRadioButtonItem);
//加图标
Icon icon=new ImageIcon("D:/图片/img.jpg");
cut.setIcon(icon);
copy.setIcon(icon);
paste.setIcon(icon);
fontMenu.setIcon(icon);
attributeMenu.setIcon(icon);
}
public static void main(String[] args) {
new MyMenuBar();
}
}
截图:
2、创建如下下拉式菜单“菜单控制字体和颜色”,并根据选择调整“示例文字”的字体和颜色。
代码:
package MyMenu;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/*a=字体,b=帮助,c=样式,d=颜色,e=退出,f=关于,
g=delete,h=粗体,i=斜体,j=红色,k=绿色,l=蓝色*/
public class MyMenuControl implements ActionListener{
int bold = 0,italic = 0;
JFrame jf;
JTextArea ta;
JMenuBar menubar;
JMenu a,b,c,d;
JCheckBoxMenuItem h,i;
JMenuItem e,f,g,j,k,l;
public MyMenuControl(){
jf=new JFrame("菜单控制字体和颜色");
ta=new JTextArea("实例文字");
menubar=new JMenuBar();
a=new JMenu("字体(F)");
b=new JMenu("帮助");
c=new JMenu("样式");
d=new JMenu("颜色");
e=new JMenuItem("退出");
f=new JMenuItem("关于");
g=new JMenuItem("delete");
h=new JCheckBoxMenuItem("粗体(B)");
i=new JCheckBoxMenuItem("斜体");
j=new JMenuItem("红色");
k=new JMenuItem("绿色");
l=new JMenuItem("蓝色");
//窗体设置
jf.setLayout(null);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setBounds(300, 200, 300, 300);
//添加组件一级
jf.setJMenuBar(menubar);
jf.add(ta);
ta.setBounds(100, 0, 84, 25);
ta.setFont(new Font("微软雅黑",Font.PLAIN,20));
menubar.add(a);
menubar.add(b);
a.add(c);
a.add(d);
a.addSeparator();
a.add(e);
a.add(f);
a.add(g);
//添加组件二级
c.add(h);
c.add(i);
d.add(j);
d.add(k);
d.add(l);
//加快捷键和加速器
/*a=字体,b=帮助,c=样式,d=颜色,e=退出,f=关于,
g=delete,h=粗体,i=斜体,j=红色,k=绿色,l=蓝色*/
a.setMnemonic('F');
h.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, InputEvent.ALT_MASK|InputEvent.SHIFT_MASK));
Icon icon=new ImageIcon("D:/图片/img.jpg");
g.setMnemonic('D');
g.setIcon(icon);
g.setEnabled(false);
//加监听
e.addActionListener(this);
h.addActionListener(this);
i.addActionListener(this);
j.addActionListener(this);
k.addActionListener(this);
l.addActionListener(this);
}
public static void main(String[] args){
new MyMenuControl();
}
@Override
public void actionPerformed(ActionEvent e) {
String str=e.getActionCommand();
if(str.equals("退出")) {
System.exit(0);
}
if(h.isSelected()) {
bold=Font.BOLD;
}else {
bold=Font.PLAIN;
}
if(i.isSelected()) {
italic=Font.ITALIC;
}else {
italic=Font.PLAIN;
}
if(str.equals("红色")) {
ta.setForeground(Color.RED);
}else if(str.equals("绿色")) {
ta.setForeground(Color.GREEN);
}else if(str.equals("蓝色")) {
ta.setForeground(Color.BLUE);
}
ta.setFont(new Font("微软雅黑",bold+italic,20));
}
}
截图:
3、创建如下弹出式菜单“创建弹出式菜单”(教材P426例23.6)
代码:
package MyMenu;
import java.awt.event.*;
import javax.swing.*;
public class MyPopupMenu {
JFrame f;
JPopupMenu pm;
JMenuItem cut,copy,paste,read,write,bold,italic;
JMenu editMenu,fontMenu;
public MyPopupMenu() {
f=new JFrame("创建弹出式菜单");
pm=new JPopupMenu();
cut=new JMenuItem("剪切");
copy=new JMenuItem("复制");
paste=new JMenuItem("粘贴");
read=new JMenuItem("只读");
write=new JMenuItem("可写");
bold=new JMenuItem("粗体");
italic=new JMenuItem("斜体");
editMenu=new JMenu("编辑");
fontMenu=new JMenu("字体");
//加监听
f.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if(e.isPopupTrigger()) {
pm.show(e.getComponent(), e.getX(), e.getY());
}
}
});
//设置窗口
f.setVisible(true);
f.setLayout(null);
f.setBounds(500, 200, 400, 300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//添加组件一级
f.add(pm);
pm.add(cut);
pm.add(copy);
pm.add(paste);
pm.add(editMenu);
//添加组件二级
editMenu.add(read);
editMenu.add(write);
editMenu.add(fontMenu);
//添加组件三级
fontMenu.add(bold);
fontMenu.add(italic);
}
public static void main(String[] args) {
new MyPopupMenu();
}
}
截图:
4、文件选择对话框实例(教材P432例23.9)
代码:
package MyMenu;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.*;
import java.io.File;
public class MyFileChooser {
JFrame f;
JTextField t;
JButton b;
public MyFileChooser() {
f=new JFrame("文件选择对话框");
t=new JTextField(20);
b=new JButton("上传");
//加监听
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser=new JFileChooser();
int i=fileChooser.showOpenDialog(f.getContentPane());
if(i==JFileChooser.APPROVE_OPTION) {
File selectedFile=fileChooser.getSelectedFile();
t.setText(selectedFile.getName());
}
}
});
//窗体设置
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setBounds(500, 300, 300, 100);
f.setLayout(new FlowLayout());
//添加组件
f.add(t);
f.add(b);
}
public static void main(String[] args) {
new MyFileChooser();
}
}
截图:
5、使用文件过滤器实例(教材P434例23.10)
代码:
package MyMenu;
import java.awt.BorderLayout;
import java.awt.event.*;
import java.io.File;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
public class MyFileFilter {
JFrame f;
JLabel l;
public MyFileFilter() {
f=new JFrame("选择照片对话框");
l=new JLabel("<双击选择文件>",SwingConstants.CENTER);
//加监听
l.addMouseListener(new MouseAdapter() {
JFileChooser fileChooser;
{
fileChooser=new JFileChooser();
FileFilter filter=new FileNameExtensionFilter(
"图像文件(JPG/GIF/PNG)","JPG","JPGE","GIF","PNG");
fileChooser.setFileFilter(filter);
}
public void mouseClicked(MouseEvent e) {
if(e.getClickCount()==2) {
int i=fileChooser.showOpenDialog(f.getContentPane());
if(i==JFileChooser.APPROVE_OPTION) {
File selectedFile=fileChooser.getSelectedFile();
l.setIcon(new ImageIcon(selectedFile.getAbsolutePath()));
l.setText(null);
}
}
}
});
f.getContentPane().add(l,BorderLayout.CENTER);
//设置窗体
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setBounds(400, 200, 400, 400);
}
public static void main(String[] args) {
new MyFileFilter();
}
}
截图:
6设计一窗口程序,显示如下图所示文件菜单,右键单击显示相
同的弹出式菜单,选择菜单时以文本方式显示选中菜单内容。(选作!)
代码:
package MyMenu;
import java.awt.event.*;
import javax.swing.*;
public class MyWordpad implements ActionListener {
/*a=新建,b=打开,c=保存,d=另存为,e=页面设置
f=打印,g=退出,h=编辑,i=格式,j=查看,k=帮助*/
JFrame jf;
JMenuBar mb;
JMenu filemenu,h,i,j,k;
JPopupMenu pm;
JMenuItem a1,b1,c1,d1,e1,f1,g1,a2,b2,c2,d2,e2,f2,g2;
public MyWordpad() {
jf=new JFrame("无标题-记事本");
mb=new JMenuBar();
filemenu=new JMenu("文件(F)");
pm=new JPopupMenu();
a1=new JMenuItem("新建(N)");
b1=new JMenuItem("打开(O)");
c1=new JMenuItem("保存(S)");
d1=new JMenuItem("另存为(A)");
e1=new JMenuItem("页面设置(U)");
f1=new JMenuItem("打印(P)");
g1=new JMenuItem("退出(X)");
a2=new JMenuItem("新建(N)");
b2=new JMenuItem("打开(O)");
c2=new JMenuItem("保存(S)");
d2=new JMenuItem("另存为(A)");
e2=new JMenuItem("页面设置(U)");
f2=new JMenuItem("打印(P)");
g2=new JMenuItem("退出(X)");
h=new JMenu("编辑(E)");
i=new JMenu("格式(O)");
j=new JMenu("查看(V)");
k=new JMenu("帮助(H)");
//设置窗体
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setBounds(100, 100, 300, 300);
jf.setLayout(null);
jf.setJMenuBar(mb);
jf.add(pm);
//菜单栏添加组件
mb.add(filemenu);
mb.add(h);
mb.add(i);
mb.add(j);
mb.add(k);
//文件添加组件
filemenu.add(a1);
filemenu.add(b1);
filemenu.add(c1);
filemenu.add(d1);
filemenu.addSeparator();
filemenu.add(e1);
filemenu.add(f1);
filemenu.addSeparator();
filemenu.add(g1);
//弹出式菜单添加组件
pm.add(a2);
pm.add(b2);
pm.add(c2);
pm.add(d2);
pm.addSeparator();
pm.add(e2);
pm.add(f2);
pm.addSeparator();
pm.add(g2);
//弹出式菜单加监听
jf.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if(e.isPopupTrigger()) {
pm.show(e.getComponent(), e.getX(), e.getY());
}
}
});
//加快捷键
filemenu.setMnemonic('F');
//加加速器
a1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
b1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
c1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
f1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
a2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
b2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
c2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
f2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
//组件加监听
a1.addActionListener(this);
a2.addActionListener(this);
b1.addActionListener(this);
b2.addActionListener(this);
c1.addActionListener(this);
c2.addActionListener(this);
d1.addActionListener(this);
d2.addActionListener(this);
e1.addActionListener(this);
e2.addActionListener(this);
f1.addActionListener(this);
f2.addActionListener(this);
}
public static void main(String[] args) {
new MyWordpad();
}
@Override
public void actionPerformed(ActionEvent e) {
String str=e.getActionCommand();
int n=str.length();
int n1=n-3;
String str1=str.substring(0,n1);
System.out.println("你点击了:"+str1);
}
}
截图: