看毕老师的视频,跟着自己做了个简单的记事本图形界面程序,封装成JAR 可是点击就是不运行。。
代码如下。- /*
- 需求:制作一个简单的记事本小程序,可以打开文件和保存文件。带有简单的图形化界面。
- 思路:一个类封装操作事件。一个类封装组建初始化。
- */
- //package TextGui;
- import java.io.*;
- import java.awt.*;
- import java.awt.event.*;
- public class MyTextProgram
- {
- public static void main(String[] args)
- {
- new Mydiscreteness().start();
- }
- }
- class Mydiscreteness //事件类,封装事件和处理方式和各个组件对象
- {
-
- //文件对象
- private File file;
- //主窗口
- private Frame framemain;
- //菜单bar
- private MenuBar mainmenu;
- //文件菜单隶属MenuBar
- private Menu filemenu;
- //菜单项打开隶属文件菜单
- private MenuItem openitem;
- //菜单项保存隶属文件菜单
- private MenuItem saveitem;
- //菜单项创建新文件隶属于文件菜单
- private MenuItem newfileitem;
- //菜单项退出隶属文件菜单
- private MenuItem exititem;
- //文本操作区域
- private TextArea textarea;
- //文本条输入路径
- private TextField textfield;
- //按钮转到,隶属主窗口
- private Button gotobutton;
- //路径错误对话框,隶属于主窗体
- private Dialog errordia;
- //打开文件对话框窗体,隶属于菜单项打开
- private FileDialog opendia;
- //保存文件对话框窗体,隶属于菜单项保存
- private FileDialog savedia;
- //保存文件对话框窗体,隶属于菜单项新建
- private FileDialog newfiledia;
- //构造函数
- //Mydiscreteness()
- //{
- // start();
- //}
- //程序真正运行时的方法
- public void start()
- {
- /*
- 初始化各个组件对象并基本设置
- */
- //主窗口设置
- framemain = new Frame("我的记事本程序");
- framemain.setBounds((1366-800)/2,(768-640)/2,800,640);
- framemain.setVisible(true);
- //framemain.setLayout(new FlowLayout());
- /*
- frame2 = new Window(framemain);
- frame2.setBounds((1366-800)/2,(768-640)/2,50,640);
- frame2.setVisible(true);
- frame2.setLayout(new FlowLayout());
- framemain.add(frame2);
- */
- //菜单bar和子菜单逻辑关系设置
- mainmenu = new MenuBar();
- filemenu = new Menu("文件");
- newfileitem = new MenuItem("新建");
- openitem = new MenuItem("打开");
- saveitem = new MenuItem("保存");
- exititem = new MenuItem("退出");
- framemain.setMenuBar(mainmenu);
- mainmenu.add(filemenu);
- filemenu.add(newfileitem);
- filemenu.add(openitem);
- filemenu.add(saveitem);
- filemenu.add(exititem);
-
- //文本操作区域设置
- textarea = new TextArea();
- /*
- //文本输入条设置
- textfield = new TextField(30);
- //按钮设置
- gotobutton = new Button("打开文件");
- frame2.add(textfield);
- frame2.add(gotobutton);
- */
- framemain.add(textarea);
-
-
- myEvent();//调用事件处理方式
-
-
-
-
-
- }
- public void myEvent()
- {
- //先添加菜单项新建文件的操作事件
- newfileitem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent ae_newfile)
- {
- newfiledia = new FileDialog(framemain,"新建",FileDialog.SAVE);
- newfiledia.setVisible(true);
- String filedir = newfiledia.getDirectory();//获取对话框返回的目录
- String filename = newfiledia.getFile();//获取对话框返回的文件名称
- //System.out.println(filedir+filename);
- try
- {
- if (filedir!=null && filename!=null)
- {
- file = new File(filedir,filename);
- file.createNewFile();
- }
- else
- return ;
-
- }
- catch (IOException ioe)
- {} //暂时没想到处理方式
- }
- });
- //添加打开文件的操作事件
- openitem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent ae_open)
- {
- opendia = new FileDialog(framemain,"打开",FileDialog.LOAD);
- opendia.setVisible(true);
- String filedir = opendia.getDirectory();
- String filename = opendia.getFile();
- try
- {
- if (filedir!=null && filename!=null)
- {
- textarea.setText("");
- file = new File(filedir,filename);
- BufferedReader bufr = new BufferedReader(new FileReader(file));
- String line = null;
- while( (line = bufr.readLine()) != null )
- {
- textarea.append(line);
- textarea.append("\r\n");
- }
- }
- }
- catch (IOException ioe)
- {}
- }
- });
- //为保存添加事件
- saveitem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent ae_save)
- {
- if (file==null)
- {
- savedia = new FileDialog(framemain,"保存",FileDialog.SAVE);
- savedia.setVisible(true);
- String filedir = savedia.getDirectory();
- String filename = savedia.getFile();
-
- try
- {
- if (filedir!=null && filename!=null)
- {
- file = new File(filedir,filename);
- file.createNewFile();
- BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
- bufw.write(textarea.getText());
- bufw.close();
- }
- else
- return ;
- }
- catch (IOException ioe)
- {}
-
- }
- try
- {
- BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
- bufw.write(textarea.getText());
- bufw.close();
- }
- catch (IOException ioe)
- {}
-
-
-
-
-
- }
- });
- //为退出菜单项添加事件
- exititem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent ae_exit)
- {
- System.exit(0);
- }
-
- });
- //为窗体添加事件,点×关闭程序功能
- framemain.addWindowListener(new WindowAdapter()
- {
- public void windowClosing(WindowEvent we_exit)
- {
- System.exit(0);
- }
- });
-
-
- }
-
-
- }
复制代码 我将 pcakage TextGui;这句注释掉,可以用CMD运行,但是我一封装成 jar 就不能运行
jar的配置信息我也配了
添加了 Main-Class: TextGui.MyTextProgram
空格和 回车都没忘记,
但是就是双击jar无法运行。
WIN7系统,jar的打开方式 设置的是 javaw.exe 这个程序。。
还请大神帮忙看看,是为什么呢? |