我已经设计好界面,可是没有实现动态效果,如点击保存如何弹出保存的对话框将其保存到所选的文件中,如何设计菜单监听?实现如普通记事本的基本功能?
以下是我所设计的界面:
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
public class TestMenu1 {
public static JMenuBar getMenu(String[] menu,String[][] menuItem){
JMenuBar jmb = new JMenuBar();
for(int i=0;i<menu.length;i++){
JMenu jm = new JMenu(menu[i]);
jmb.add(jm);
for(int j=0;j<menuItem[i].length;j++){
if("".equals(menuItem[i][j])){
//不用!=比较,只有String与null比时才用
jm.addSeparator();//添加分隔线
}else {
JMenuItem jmi = new JMenuItem(
menuItem[i][j]);
jm.add(jmi);
//jm.addSeparator();//添加分隔线
//jmi.addActionListener();
}
}
}
return jmb;//不可少
}
public TestMenu1(){
JFrame jf = new JFrame("Menu");
String[] jm = {"文件","编辑","查看","收藏"};
//二维数组的写法
String[][] jmi = {{"打开","编辑","打开方式","","保存","另存为"},
{"剪贴","复制","","复制到文件"},
{"工具栏","","状态栏","浏览器栏"},
{"添加到收藏夹","整理收藏夹"}};
JMenuBar jmb = getMenu(jm,jmi);//调用方法
jf.setJMenuBar(jmb);
jf.setSize(300,200);
jf.setLocation(300,200);//设置窗口位置
jf.setVisible(true);//尽可能放后
jf.setResizable(false);//窗口大小固定
jf.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestMenu1();
}
}
以下是我所设计的界面:
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
public class TestMenu1 {
public static JMenuBar getMenu(String[] menu,String[][] menuItem){
JMenuBar jmb = new JMenuBar();
for(int i=0;i<menu.length;i++){
JMenu jm = new JMenu(menu[i]);
jmb.add(jm);
for(int j=0;j<menuItem[i].length;j++){
if("".equals(menuItem[i][j])){
//不用!=比较,只有String与null比时才用
jm.addSeparator();//添加分隔线
}else {
JMenuItem jmi = new JMenuItem(
menuItem[i][j]);
jm.add(jmi);
//jm.addSeparator();//添加分隔线
//jmi.addActionListener();
}
}
}
return jmb;//不可少
}
public TestMenu1(){
JFrame jf = new JFrame("Menu");
String[] jm = {"文件","编辑","查看","收藏"};
//二维数组的写法
String[][] jmi = {{"打开","编辑","打开方式","","保存","另存为"},
{"剪贴","复制","","复制到文件"},
{"工具栏","","状态栏","浏览器栏"},
{"添加到收藏夹","整理收藏夹"}};
JMenuBar jmb = getMenu(jm,jmi);//调用方法
jf.setJMenuBar(jmb);
jf.setSize(300,200);
jf.setLocation(300,200);//设置窗口位置
jf.setVisible(true);//尽可能放后
jf.setResizable(false);//窗口大小固定
jf.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestMenu1();
}
}
import javax.swing.*;
import java.awt.HeadlessException;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;/**
* 单击菜单项保存文件
*/
public class TestSaveToFileMenu { // 程序入口
public static void main(String[] args) {
new SaveToFileFrame().setVisible(true);
}
}// 包含了保存文件菜单的窗体
class SaveToFileFrame extends JFrame { // 保存文件对话框
private JFileChooser dialog = new JFileChooser(); private JFrame thisFrame = this; // 菜单事件侦听器。重点看这里。
private ActionListener saveActionListener = new ActionListener() { public void actionPerformed(ActionEvent e) { if (dialog.showSaveDialog(thisFrame) == JFileChooser.APPROVE_OPTION) {
try {
// saveToFile 方法在最后面定义了
saveToFile(dialog.getSelectedFile());
thisFrame.setTitle("文件保存完毕。");
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}; // 构造方法
SaveToFileFrame() throws HeadlessException {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300, 100);
setLocation(200, 100); add(createMenuBar(), BorderLayout.NORTH);
} // 创建菜单项
private JMenuBar createMenuBar() {
JMenuBar bar = new JMenuBar();
JMenu fileMenu = new JMenu("文件");
JMenuItem menuItem = new JMenuItem("保存为...");
menuItem.addActionListener(saveActionListener);
fileMenu.add(menuItem);
bar.add(fileMenu);
return bar;
} // 将一段文本保存在指定的文件中
private void saveToFile(File file) throws IOException {
if (!file.exists()) {
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("您选择了把文件保存在这里:" + file.getAbsolutePath());
writer.close();
}
}
}