zoukankan      html  css  js  c++  java
  • 简单练习

    练习

    前提,公司战略方向改变需要技术从.net转向java于是自学了一点java 发现基础部分很多相似之处当然也有很多很多的不同之处 比如 对已string类型 单引号与双引号敏感 等等这里就不一一说明啦,来看看这第一次写的一个小程序.

    环境信息:win server 2008 R2 开发工具 Eclipse  4.3.0 

    要求:实现简单图片查看功能

    直接上代码: 

    import java.awt.EventQueue;
    import java.awt.event.*;
    import java.io.*;
    import javax.swing.*;
    
    public class HelloWord {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
        EventQueue.invokeLater(new Runnable() {
    		
    		@Override
    		public void run() {
    			// 开始运行
    			JFrame frame=new ImageViewerFrame();
    			frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			frame.setVisible(true);
    		}
    	});
    	}
    }
    //显示图片
    class ImageViewerFrame extends JFrame{
    	public ImageViewerFrame() {
    		setTitle("图片查看");
    		setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
    		
    		//创建label去储存图片
    		label=new JLabel();
    		add(label);
    		
    		//选择文件
    		chooser=new JFileChooser();
    		chooser.setCurrentDirectory(new File("."));
    		
    		//设置按钮
    		JMenuBar menuBar=new JMenuBar();
    		setJMenuBar(menuBar);
    		
    		JMenu menu=new JMenu("文件");
    		menuBar.add(menu);
    		
    		JMenuItem opItem=new JMenuItem("打开");
    		menu.add(opItem);
    		opItem.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// 显示选择按钮
    				int result=chooser.showOpenDialog(null);
    				//如果已选择文件就显示在lab中
    				if (result==JFileChooser.APPROVE_OPTION) {
    					String name=chooser.getSelectedFile().getPath();
    					label.setIcon(new ImageIcon(name));
    				}
    			}
    		});
    		JMenuItem exitItem=new JMenuItem("退出");
    		menu.add(exitItem);
    		exitItem.addActionListener( new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent arg0) {
    				// 执行退出
    				System.exit(0);
    			}
    		});
    	}
    	
    	private JLabel label;
    	private JFileChooser chooser;
    	private static final int DEFAULT_WIDTH=300;
    	private static final int DEFAULT_HEIGHT=400;
    }
    

      这段代码来自 <JAVA核心技术-卷1基础知识> ,开始看起来的时候很多地方能看懂(可能是有.net基础的原因)感觉特别像.net写webform包括创建按钮,增加按钮功能等等,而其中的引用 土话.dll文件 相当于 java中的包,引用方式大致相同, 从头来分析一下这个段代码:

        首先是程序引用,.net叫引用程序集 .net中实现方法的复用,程序之间相互调用首先需要添加该程序的引用到程序集中,然后从bin目录中添加该.dll文件地址 这样把文件引用到当前项目中重新生成.csproj之后,凡是添加该引用的项目都可以访问到这个方法或这个项目,而java引用包这方面有四种引用方式,原理大致与.net差不多 更简单的是比如导入同一项目中的很多包 可以用*代替,例如import java.lang.*也就是引用java.lang下所有的包,有点像.net的命名空间,不用写具体哪个命名空间 哪个类balabala..

       其他的main函数啊,void static之类的就不多说了,这里就深入说一下EventQueue.invokeLater这个,首先介绍一下EventQueue这个 查阅了相关资料 个人是这个意思,它是swing  中GUI重要的组成部分他主要负责AWTEvent事件分发机制,就像是个物流中心,当有事件触发时候系统会把这个事件发送到物流中心 方便他再次分发,而参考文章中提到这个事件分发机制实际上是同步分发机制,也就意味着如果时间多的时候需要排队等待,当我第一次看到invokeLater这个方法时候 第一反应是.net中的委托常用的BeginInvoke/Invoke 异步/同步 执行使用委托的原因常常是因为有回调函数这点与windows的GUI机制不谋而合,好处显而易见执行完成之后会自动清除,保证程序可确定性,减少其他程序类入侵.

       程序继续执行ImageViewerFrame,创建当前窗口关闭按钮,显示当前窗口,重要的是下面创建该窗口 与.net创建方式大致相同包括 按钮,按钮功能设定,这段代码中重写了打开文件与关闭方法,有语言功底的孩子硬很轻松能读懂,监听读取文件事件然后重新显示在矿体内部.

      

  • 相关阅读:
    Judy alpha 第九天
    Judy alpha 第八天
    Judy alpha 第七天
    Judy alpha 第六天
    Judy alpha 第五天
    Judy alpha 第四天
    Fieldtrip 和 spm 文件读取
    matlab更改打开时候默认路径
    mne-python 安装大法
    Greenhouse-Geisser;统计结果报告;效应力大小介绍
  • 原文地址:https://www.cnblogs.com/workstation-liunianguowang/p/6674663.html
Copyright © 2011-2022 走看看