黑马程序员=====GUI
来源:互联网 发布:java 获取字符串下标 编辑:程序博客网 时间:2024/06/12 00:20
------<a target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
GUI就是图形用户界面
but.addMouseListener(new MouseAdapter(){private int count = 1;private int clickCount = 1;public void mouseEntered(MouseEvent e) {System.out.println("鼠标进入到该组件"+count++);}public void mouseClicked(MouseEvent e){if(e.getClickCount()==2)System.out.println("双击动作"+clickCount++);}});
键盘事件:
but.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e){if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)System.out.println("ctrl+enter is run");}});
MenuBar bar=new MenuBar();fileMenu = new Menu("文件");openItem = new MenuItem("打开");saveItem = new MenuItem("保存");closeItem = new MenuItem("退出");fileMenu.add(openItem);fileMenu.add(saveItem);fileMenu.add(closeItem);bar.add(fileMenu);f.setMenuBar(bar);
练习:
import java.awt.*; import java.awt.event.*; class MyMenuDemo { //定义组件引用 private Frame f; private MenuBar mb; private Menu m,subMenu; private MenuItem closeItem,subItem; //构造函数 MyMenuDemo() { init(); } //窗体设置与功能实现 public void init() { //窗体设置 f = new Frame("my window"); f.setBounds(300,100,500,600); f.setLayout(new FlowLayout()); mb = new MenuBar();//创建菜单条 m = new Menu("文件");//创建菜单 subMenu = new Menu("子菜单");//菜单下面的子菜单 subItem = new MenuItem("子条目");//子菜单包含的菜单条目 closeItem = new MenuItem("退出");//菜单包含的条目 //菜单添加菜单组件 subMenu.add(subItem); m.add(subMenu); m.add(closeItem); mb.add(m); //窗体添加菜单组件 f.setMenuBar(mb); //窗体上事件 myEvent(); //窗体显示 f.setVisible(true); } private void myEvent() { //关闭菜单具备关闭事件 closeItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); //窗体关闭功能 f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } public static void main(String[] args) { new MyMenuDemo(); } }
jar包双击执行
既然是图形化界面,就需要通过图形化界面的形式运行程序,而不是是用Dos命令行执行,那么如何通过双击程序就执行程序呢?这就需要将程序的class文件打包。
步骤如下:
1、首先要在java文件中导入一个包,没有则需创建一个包,如package mymenu;
2、生成包:通过编译javac -d c:\myclass MyMenu.java,此时则在c盘下的myclass文件夹下生成了所有的.class文件
3、在此目录下新建一个文件,如1.txt或者其他任意名称任意扩展名的文件都可,然后在其中编辑固定的格式:“Main-Class: mymenu.MenuDemo”,只写引号中的内容。需要需要在冒号后有一个空格,在文件末尾要回车。
4、编译:jar -cvfm my.jar 1.txt mymenu即可。如果想添加其他信息,则直接编译jar即可得出相应的命令
5、此时双击即可执行。
说明:
1)在固定格式中:
a、如果无空格:在编译的时候,就会报IO异常,提示无效的头字段,即invalidheader field。这说明1.txt在被IO流读取。
b、如果无回车:在列表清单.MF中不会加入相应的加载主类的信息,也就是说配置清单的属性主类名称不会加载进清单中,也就不会执行。
2)jar文件必须在系统中注册,才能运行。注册方法如下:
A.对于XP系统:
a.打开任意对话框,在菜单栏点击工具按钮,选择文件夹选项
b.选择新建--->扩展名,将扩展名设置为jar,确定
c.选择高级,可更改图标,然后点击新建,命名为open,
d.在用于可执行应用程序中,点浏览,将jdk下的bin的整个文件路径添加进来,并在路径后添加-jar即可。
B.对于win7系统:
a.改变打开方式:右击.jar文件,点击打开方式,选择默认程序为jdk下bin中的javaw.exe应用程序。
b.修改关联程序的注册表:打开注册表(win+r),找到注册表路径\HKEY_CLASSES_ROOT\Aplications\javaw.exe\shell\open\command下的字符串值,右击点修改,在原路径的中添加-jar,如:"C:\ProgramFiles\Java\jre6\bin\javaw.exe" -jar "%1",注意-jar两边要有空格,保存。
c.双击即可执行jar程序,如果仍不能执行,则需下载最新版的jdk。
示例:
/* 练习:利用Menu组件完成一个简单的记事本程序。 需求:具有文件菜单,文件中有打开,保存和退出功能。将写好的程序变为双击可执行的程序。 */ package mymenu; import java.awt.*; import java.awt.event.*; import java.io.*; class MyMenuText { //定义组件引用 private Frame f; private TextArea ta; private MenuBar mb; private Menu fileMe; private MenuItem openMi,saveMi,otherSaveMi,closeMi; private FileDialog openDia,saveDia; private File file; //构造函数 MyMenuText() { init(); } //功能实现 private void init() { //组件实例化 f=new Frame("MyText"); ta=new TextArea(); mb=new MenuBar(); fileMe=new Menu("文件"); openMi=new MenuItem("打开"); saveMi=new MenuItem("保存"); otherSaveMi=new MenuItem("另存为"); closeMi=new MenuItem("退出"); openDia=new FileDialog(f,"选择打开的文件",FileDialog.LOAD); saveDia=new FileDialog(f,"保存到哪里",FileDialog.SAVE); //基本设置 f.setBounds(300,150,600,500); //添加组件 f.add(ta); f.setMenuBar(mb); mb.add(fileMe); fileMe.add(openMi); fileMe.add(saveMi); fileMe.add(otherSaveMi); fileMe.add(closeMi); //窗体中事件 myEvent(); //窗体显示 f.setVisible(true); } private void myEvent() { //窗体关闭功能 f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); //打开事件 openMi.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //显示文件对话窗口 openDia.setVisible(true);//------------------ String dir=openDia.getDirectory();//获取目录 String fileName=openDia.getFile();//获取文件名 if(dir==null||fileName==null)//对打开了文件对话框,但未做出操作的处理 return; file=new File(dir,fileName);//文件对象 try { ta.setText("");//每打开一个文件时,将文本区的内容清空 //带缓冲技术的读取流 BufferedReader br=new BufferedReader(new FileReader(file)); String line=null;//读一行 while ((line=br.readLine())!=null) { //添加到文本区域 ta.append(line+"\r\n"); } br.close();//关流 } catch (IOException ie) { throw new RuntimeException("文件打开失败"); } } }); //保存事件 saveMi.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //如果是第一次保存,则显示文件对话框 if(file==null)//------------- { //显示文件对话框 saveDia.setVisible(true);//---------------------- String dir=saveDia.getDirectory(); String filename=saveDia.getFile(); if(dir==null||filename==null)//-------------------- return; file=new File(dir,filename); } save();//保存文件方法 } }); //另存为事件 otherSaveMi.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //不管是不是第一次保存,都显示文件对话框 saveDia.setVisible(true);//---------------------- String dir=saveDia.getDirectory(); String filename=saveDia.getFile(); if(dir==null||filename==null)//-------------------- return; file=new File(dir,filename); save();//保存文件方法 //保存时,默认文件对话框位置在打开文件的位置 openDia.setFile(file.getName()); } }); //退出事件 closeMi.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); } //保存文件 private void save() { try { //带缓冲区的写入流 BufferedWriter bw=new BufferedWriter(new FileWriter(file)); //获取文本区域中的内容 String text=ta.getText(); bw.write(text);//写入文件中 bw.close();//关流 } catch (IOException ie) { throw new RuntimeException("文件保存失败"); } } public static void main(String[] args) { //程序运行 new MyMenuText(); } }
- 黑马程序员=====GUI
- 黑马程序员 GUI
- 黑马程序员之GUI
- 黑马程序员 Java GUI
- 黑马程序员: GUI
- 黑马程序员-----GUI
- 黑马程序员 GUI学习
- 黑马程序员:GUI
- 黑马程序员_day22 GUI。
- 黑马程序员九、GUI
- 55.黑马程序员-GUI
- 黑马程序员---GUI【java】
- 黑马程序员 GUI
- 黑马程序员—GUI
- 黑马程序员-GUI
- 黑马程序员-GUI编程
- 黑马程序员----9GUI
- 黑马程序员-GUI概述
- Trips and Users ---刷完database 留念
- iOS网络监控— BMReachability
- C++实现KMP模式匹配算法
- Linux Shell 编程实战技巧
- ssh-key 与 git账户配置以及多账户配置
- 黑马程序员=====GUI
- 断点续传---多线程下载进阶(三)
- iOS系统和XCode各版本发布日期
- HTML5 drag的使用案例 --- 类似于图片墙
- FatMouse's Speed
- js: 实现Select的option上下移动
- Timber
- 黑马程序员03数组排序与二分法查找
- MyBatis拦截器实现mysql与oracle共用分页