java 中如何用键盘输入

java 中如何用键盘输入,第1张

可以使用java的Scanner类,常见的是用nextInt()输入一个整数,用next()输入一个字符串,下面是一个小的演示程序

public class InputTest

{

    public static void main(String[] args)

    {

        Scanner input = new Scanner(Systemin);

        Systemoutprintln(inputnextInt());

        Systemoutprintln(inputnext());

        inputclose();

    }

}

本文实例形式详述了java实现一个程序运行时的启动窗口效果,如常用的microsoft word、 borland jbuilder 等,这样的窗口称为信息窗口。使用信息窗口的好处是可以使用户在等待软件主界面出现前的一段时间中得知软件运行状态。本例将演示如何来实现信息窗口,当打开程序时,信息窗口先显示,并在窗口上倒计时,直到“waiting 0”时,关闭该窗口,显示程序的主窗口。

该功能的主要实现方法如下:

一般来说,大多数的信息窗口是没有标题栏的,因此信息窗口不能由继承jframe 类来实现,一种简单的做法是通过继承jwindow 来实现(当然继承window 类也可以,但一个原则是尽量使用swing 中的界面

类)。另外,本例用到javaawt 包中的mediatracker 类。使用该类的好处是可以更好地管理程序中要使用的,同时还可以保证和界面同时显示,避免了窗口显示后很久才显示的缺点。

具体 *** 作步骤如下:

1.新建一个project,取名为jspleshwindowdemo,其他设置按默认值。

2.新建一个application ,取名为jspleshwindowdemo,主窗口取名为mainframe,主窗口标题取名为jspleshwindowdemo。

3.先来编写信息窗口的代码。新建一个新类spleshwindowjava,继承javaswingjwindow类。在spleshwindow 类中,定义新的属性,代码如下:

private string statusstr=null; //信息窗口中要显示的信息

private image logoimg=null; //信息窗口中的显示

4.向构造方法中添加代码,加载并初始化窗体,实现代码如下:

public spleshwindow(jframe owner) { //以jframe 对象为参数,可以是信息窗口和主窗口交互

super( owner );

// 加载

logoimg=gettoolkit()getimage( classloadergetsystemresource("images/spleshjpg") );

// 等待加载完成

javaawtmediatracker tracker=new javaawtmediatracker( this ); //创建一个mediatracker 对象

trackeraddimage( logoimg , 0 ); //将放入mediatracker 对象中,序号为0

try{ //等待直到加载完成

trackerwaitforall();

}catch ( interruptedexception e ) {

eprintstacktrace();

}

// 设置信息窗体在屏幕上的显示位置

setlocation( gettoolkit()getscreensize()width/2 - logoimggetwidth(this)/2 , gettoolkit()getscreensize()height/2 -

logoimggetheight(this)/2 );

setsize( logoimggetwidth(this) , logoimggetheight(this) ); // 设置窗口大小

}

5.编写设置显示信息的方法,代码如下:

public void setstatus( string status ){

statusstr=status;

paint( getgraphics() ); // 重画窗口来更新信息窗口中的显示信息

}

6.重置paint()方法来绘制和显示信息的方法,代码如下:

public void paint(graphics g) {

/@todo override this javaawtcomponent method/

superpaint(g);

//绘制

if ( logoimg!=null )

总体思路是先打成jar再把jar打成exe。主要看13和23里的内容就可以了。1.将项目打成jar:11要将项目打包成jar文件,方法很多,可以用Eclipse自带的打包工具Ant打包,也可以用Eclipse的Export生成jar。经过尝试后,我不推荐用Ant打包,因为要自己编写xml脚本语言,还要增加一些外部的jar,所以我打了好几次都没打成。12在这里介绍两种方法生成jar,第一种是用Eclpise的Export功能。在要打包的项目上击右键,选择Export,在窗口中选择Java里的JARfile。Next后的窗[color=#000000]口中已经自动选好了要打包的[/color]项目,用户可以点击加号查看项目里被打包的内容。在下面的JARfile里设置你打包生成jar文件的输出目录,下一步在出现的窗口中选择Useexistingmanifestfromworkspace,在下面的Mainclass后面直接点Browse,它会自动列出你项目中有主函数main的类。选择主类后点Finish即可生成jar文件。在此说明一下,这种打包方法不能把项目中的外部的jar包打进来,应该是也要编写一些脚本语言,没往深研究。所以生成后的jar有些是不能执行的。13第二种方法是利用Eclipse的一个第三方插件fatjar生成jar文件,也是本人觉得最简单最方便的一种生成方式。先从网上下载些插件,解压后是一个plugins的文件夹,里面只有一个文件夹,我的是“netsffjepfatjar_0024”将它copy到Eclipserplugins文件夹下,此插件就安装成功了,重启Eclipse在项目上右击就会看到多出一个“BuildFatJar”在前面有个绿色的“+”号,这时你就可以用此插件打包你的项目了。进去后第一个界面Jar-Name里增入要生成的jar文件名,我的是“CAMP_fatjar”。在Main-Class后点Browse像Export一样它也会列出你项目中的主类,选择后其它默认即可,Next后会列出你要打包的所有内容,这个插件的优势就是可以将你项目中的外部jar也打进来,有三个选项,其中ExportANT是生成buildxml脚本文件,方便用户以后修改脚本,其它两个按钮没用。在这里什么都不点,直接点Finish就可以生成jar文件。2将jar打成exe文件:21虽然此时的jar文件已经可以执行了。生成exe的文件我也是用两种方法实现的,用到的打包工具是j2ewiz和exe4j,它们的不同会在我下面的介绍中体现出来。22首先是j2ewiz,这个软件是绿色的,不用安装,解压后可以直接运行,但这个软件生成的exe文件不是跨平台的。运行此程序首先就是输入要打包的jar文件,我们浏览JAR选择我们之前用fatjar生成的“CAMP_fatjar”项目文件(详见13),下面那个选项是提示用户最低要求的JRE版本,一般选13。下一步,因为我们的寝室管理系统是图形界面,所以在这里选“Windows窗口程序”下一步它也是自动生成要执行的主类,你只要选择就可以。下面的选框可以选择你启动程序显示的。下一步后这个窗可按个人喜好选择。下一步,如果你的程序还有什么依赖的外部jar文件,可以从这里加上,但因为之前的fatjar以经将我们项目所用的那三个连数据库的外部类打进CAMP_fatjar包里了,所以这里不用再添加。如果你之前是用Export打的jar包,那么这里就需要再把那个三个数据库的包加进来了(详见12)。下一步是添入要生成的exe文件名,再选一个程序图标就可以了,下一步后生成exe文件,点完成。双击生成的exe文件就能看到运行效果了,这种exe文件还没有脱离JDK环境,还不能跨平台使用,只能用于小组成员测试使用。23下面进入最关键的,如何打包跨平台的exe文件。用到的软件是exe4j,我用的是V40版的,此软件需要破解。安装后运行左窗窗口标有十步,其实打包过程也非常简单。第一步完全略过,直接点Next第二步我们选择“JARinEXEmode”就是选择我们已经有制作好的jar文件。第3步上面是项目名称,可随便填写,下面一个写出你想要将打包后的exe文件输出的目录我的是“桌面\project\”。第4步,由于我的演示程序是图形的,所以选第一个,如果你的程序是控制台的,则选择第二个,Executablename写你将要生成的exe文件的名字,IconFile可以选择生成文件的图标。第5步,先别管上面的,先在下面单击绿色的“+”号,在d出的窗口中点Archive,然后找到起初已经做好的CAMP_fatjar(详见13)文件,"OK"后返回,在下面的ClassPath里就出现jar文件路径后,再在上面MainClass栏内点击找到main所在的类。第6步,你系统的JRE版本,一般是填个13,下面填16在这里单击advancedoptions,选择searchsequence。选这个就是因为我们要把JDK环境也打包进来,好让程序能跨平台使用。首先要从你系统的JDK下的JRE目录copy到你exe文件的输出目录下“桌面\project\JRE”,然后回到exe4j中在d出窗口删除列表中的所有项。我的是三项,一个注册表的,一个JAVA环境变量的,一个JDK环境变量的,都不要。然后单击绿“+”,选择directory并选择JRE的根目录,我的是“桌面\project\JRE”就是copy后的目录,选完后exe4jd出窗口中的Directory里会显示“\JRE”。点OK关闭该窗口,返回exe4j的主窗口,你就可以看到刚加的路径。再从主窗口左侧窗口中单击advancedoptions,并选择preferredVM,在d出的窗口中选择clienthostspotVM,单击next按钮继续。7、8步是一些个性设置默认即可。第9步编译完后第10步你点那个“ClickHeretoStarttheApplication”按钮就可以看到程序运行效果了,然后再点”Seaveas”保存一个exe4j生成的一个文件,随便存哪里都行,和我们的exe程序无关。全部制作过程就完工了。

将在Eclipse中编写的java程序发布成exe的可执行文件,需要你的电脑上有exe4j,然后具体的方法如下:

我们事先已经制作好了jar文件,故选下面一个 JAR in EXE。

第一个空随便写,下面一个写出你想要将打包后的exe文件输出的目录。

由于我的演示程序是在console下的,所以选第二个,下面的Executable name写你将要生成的exe文件的名字,其他按默认即可。

首先,单击绿色的 + 号,在d出的窗口中点Archive,然后找到起初已经做好的jar文件, OK 后返回,在下面的Class Path里就出现jar文件路径后,再在上面Main Class栏内点击找到主类,这一步即算完成。

一步一步填写,然后就算基本上完成了。

之后就可以进行编译了,然后就会变成exe的可执行文件。

为了在您的机器上配置起一个Java开发环境——您将使用一个“开发环境”来“开发”(编写)程序——您需要完成以下这些步骤:

1下载一个包含Java开发环境(编译器和其他工具)的大文件。点击“下载J2SE SDK”链接下载SDK(软件开发工具包)软件。网页会显示一个许可协议。点击“接受”。选择您的 *** 作系统,然后将文件保存到下载目录中。这是一个巨大的文件,用电话调制解调器下载需要好几个小时。接下来的两个文件也很大。

2下载一个包含Java文档的大文件。选择 *** 作系统后点击SDK141文档的链接。

3如果您的机器上还没有安装WinZip(或可执行相同功能的程序),那么您需要下载一个包含WinZip的大文件并安装之。如果您的机器上没有安装某个的版本的WinZip或其他解压缩软件,下载WinZip的试用版。运行EXE文件安装。很快我们将使用它来安装文档。

4安装Java开发环境。运行第一步下载的j2sdk-1_4_1-exe文件。他将自动解压并安装开发工具包。

5安装文档。阅读安装说明文档。它会要求您将文档文件移至刚才开发工具包的安装目录。将文档解压缩,文件就会被安排到适当的位置。

6调整环境变量。按照此页的要求,您需要改变路径变量。最简单的办法是打开一个MS-DOS窗口键入PATH看看当前的路径变量是什么,然后用记事本打开autoexecbat按要求修改PATH环境变量。

7全面测试。现在您应该可以打开另一个MS-DOS窗口并键入javac了。如果一切设置妥当,那么您将看到屏幕将输出两行文字告诉您如何使用javac。这意味着一切已经准备就绪了。如果您看到“错误的命令或文件名”这条消息,则说明还没有准备好。请重新阅读安装说明检查哪里出了问题。确定PATH被正确设置并可用。回头重新阅读上面的步骤,问题不解决不要轻易放弃。现在您已自豪地拥有一台能够编译Java程序的机器了。您已经准备好开始编写软件了!

2

顺便指出,刚才您解压缩的内容包括一个demo(演示)目录,其中包含许多精致的例子。所有的例子都可以立即执行,所以您不妨找到这个目录试运行一下其中的某些例子。许多例子都会发声,所以请打开扬声器。要运行例子,找到名如example1html的网页文件并使用您常用的浏览器打开即可。

3

您的第一个程序将是小巧可爱的。它将建立一个绘图区域并在其上绘制一条对角线。创建此程序您需要:

1打开记事本键入(或复制粘贴)程序 。建立一个新目录以保存程序。打开记事本(或其他可以创建TXT文件的文本编辑器)。将范例程序录入或复制粘贴到记事本窗口中。切记:输入程序的大小写敏感。因此必须按照范例程序中字母的大小写输入。重审以上编程步骤。如果录入内容和范例程序不是完全一致,则程序将无法正常运行。

2保存程序 。将文件在第一步创建的路径下保存,文件名为FirstAppletjava。文件名大小写敏感。请确保字母“F”和“A”大写,其他字母小写,如前所示。

3使用Java编译器编译程序生成一个Java程序 。

打开一个MS-DOS窗口。改变至包含FirstAppletjava的路径下(cd),键入:

javac FirstAppletjava

记住大小写敏感!或者编译成功,这时屏幕不输出任何信息,或者有错误发生。若没有错误,则会在目录里生成一个名为FirstAppletclass的文件与FirstAppletjava并列。

(请确保程序保存的文件名为FirstAppletjava而不是FirstAppletjavatxt。最简单的办法就是在MS-DOS窗口下键入dir然后查看文件名。若扩展名是txt 则请重命名文件去掉此扩展名。也可以运行Windows资源管理器在“查看”菜单下点击“选项”。确保“隐藏已注册的MS-DOS文件扩展名”选项处于未选中状态,然后在资源管理器中查看文件名。若需要则将文件改名。)

4排除问题。若有问题产生则想办法解决。将您的程序与上面的范例程序对比,使之完全相同。修改过程中不断编译程序,直到没有错误发生。

5建立一个HTML网页“包含”刚创建的Java程序 。

创建一个HTML页面来包含小程序。另开一个记事本窗口。录入下面的内容:

将此文件存于同一目录中,文件名为applethtm。

Java程序怎样编写

4

1运行Java程序 。

在您的MS-DOS窗口中键入:

appletviewer applethtm

应该可以看见一条从左上角到右下角的对角线:(如上图所示)

将小程序查看器的窗口拉大一些以查看整条对角线。您也可以将此HTML网页装载到任何现用的浏览器中,如Netscape Navigator或微软IE,看到的结果是大致相同的。

使用Java语言编程就需要一个Java编译器。下一节将指导您下载并安装一个编译器。一旦有了编译器我们就可以开始学习编程了。下载和安装过程将会持续几个小时,大部分时间用来下载几个很大的文件。您还需要有大约40兆字节的空闲磁盘空间(开始前请确定有足够的空间)。

这里是本节的示范程序:

import javaawtGraphics;

public class FirstApplet extends javaappletApplet

{

public void paint(Graphics g)

{

gdrawLine(0, 0, 200, 200);

}

}

在Java 语言中 提供了各种各样的输入输出流(stream) 使我们能够很方便的对数据进行 *** 作 其中 管道(pipe)流是一种特殊的流 用于在不同线程(threads)间直接传送数据 一个线程发送数据到输出管道 另一个线程从输入管道中读数据 通过使用管道 实现不同线程间的通讯 无需求助于类似临时文件之类的东西 本文在简要介绍管道的基本概念后 将以一个具体的实例pipeapp加以详细说明 .管道的创建与使用Java提供了两个特殊的专门的类专门用于处理管道 它们就是pipedinputstream类和pipeoutputstream类 Pipedinputstream代表了数据在管道中的输出端 也就是线程向管道读数据的一端 pipeoutputstream代表了数据在管道中的输入端 也就是线程向管道写数据的一端 这两个类一起使用可以提供数据的管道流 为了创建一个管道流 我们必须首先创建一个pipeoutstream对象 然后 创建pipeinputstream对象 实例如下 pipeout= new pipedyoutstream();pipein= new pipedputsteam(pipepout);一旦创建了一个管道后 就可以象 *** 作文件一样对管道进行数据的读写 .演示程序 pipeapp应用程序由三个程序组成 主线程(pipeapp Java)及由主线程启动的两个二级线程(ythread Java和zthread Java) 它们使用管道来处理数据 程序从一个内容为一行一行 x 字母的 input txt 文件中读取数据 使用管道传输数据 第一次是利用线程ythread将数据 x 转换为 y 最后利用线程zthread将 y 转换为 z 之后 程序在屏幕上显示修改后的数据 主线程 (pipeapp Java)在main()方法中 程序首先创建一个应用对象 pipeapp pipeapp=new pipeapp();由于程序中流 *** 作都需要使用IOException异常处理 所以设置了一个try块 在try中 为了从源文件中读取数据 程序为 input txt 文件创建了一个输入流Xfileln :fileinputstream xfileln= new fileinputstream( input txt );新的输入流传递给changetoy()方法 让线程ythread能读取该文件 inputstream ylnpipe =pipeapp changetoy(xfileln);changetoy()方法创建将输入数据 x 改变到 y 的线程ythread 并返回该线程的输入管道 inputstream zlnpipe = pipeapp changetoz(ylnpipe);changetoz()方法启动将数据从 y 改变到 z 的线程zehread 主程序将使用从changetoz()返回的输入管道 得到以修改的数据 然后 程序将管道输入流定位到datainputstream对象 使程序能够使用readline()方法读取数据 datainputstream inputstream = new datainputstream(zlnpiepe);创建了输入流以后 程序就可以以行一行的读取数据病显示在屏幕上 String str= inputstream readline();While(str!=null){system out println(str); str=inputstream readline();} 显示完成之后 程序关闭输入流 inputstream close();changetoy()方法 changetoy()方法首先通过传递一个参数inputstream给datainputstream对象来定位资源的输入流 使程序能使用readline()方法从流中读取数据 datainputstream xfileln =new datainutstream(inputstream) 然后 changetoy()创建输出管道和输入管道 pipeoutstream pipeout = new pipeoutputstream();pipeinputstream pipeln = new pipedinputsteam(pipeout); 为了能够使用println()方法输出修改的后的文本行到管道 程序将输出管道定位到printstream对象 printstream printstream = new printstream(pipeout);现在 程序可以创建将数据从x改变到y的线程 该线程是ythread类的一个对象 他传递两个参数 输入文件(xfileln)和输出管道(调用printstream) ythread ythread =new thread(xfileln printstream);之后 程序启动线程 changetoz()方法changetoz()方法与changetoy()方法很相似 他从changetoy()返回的输入流开始 datainputstream yfileln= new datainputstream(inputstream);程序创建一个新的管道 pipedoutstream pipeout = new pipedoutputstream();pipedinputstream pipeln = new pipedinputsream(pipeout ); 该线程通过这个新的管道发出修改后的数据(输入流pipeln )给主程序 源程序如下 ////pipeapp Java pipeapp的主应用程序//import Java io class pipeapp{public static void main(string[] args){pipeapp pipeapp=new pipeapp();try{fileinputstream xfile =new fileinputstream( input txt );inputstream ylnpipe = pipeapp changetoy(xfileln);inputstream zlnpipe=pipeapp changetoz(ylnpipe);system out println();system out println( here are the results );system out pringln();datainputstream inputstream = nes datainputstream(zlnpipe);string str = inputstream readline();while (str!=null){system out println(str);str=inputstream readline();}inputstream close();}catch(exception e){system out println(e tostring());}}public inputstream changetoy(inputstream inputstream){try{datainputstream pipeout = new datainputsteam(inputstream);pipedoutstream pipeout = new pipedoutputstream();pipedlnsteam pipeln = new pipedlnputstream(pipeout);printstream printstream = new printstream(pipeout);ythread ythread = new ythread(xfileln printstream);ythread start();return pipeln;}catch(exeption e){system out println(x tostring());}return null;}public inputstream changetoz(inputstream inputsteam){try{datainputstream yfileln = new datainputstream(inputstream);pipeoutputstream pipeln = new pipedinputstream(pipeout );printrstream printstream = new printsteam(pipeout );zthread zthread = new zthread(yfileln printstream );zthread start();return pipeln ;}catch(exception e){system out println(e tostring());}return null;}} Ythread类和Zthread类由于ythread类与zthread类基本一样 在此仅以ythread为例加以说明 Ythread的构造器接收两个参数 输入的文件和第一个管道的输出端 构造器存储这两个参数作为类的数据成员Ythread(datainputstream xfileln pringstream printstream){this xfileln = xfileln;this printstream = printstream;} 线程通过run()方法来处理数据 首先读取一行数据 确保xstring不为空的情况下循环执行 string xstring = xfileln readline();每读一行数据 完成一次转换string ystring = xstring replace( x y );然后将修改后的数据输出到管道的输出端 prinstream prinrln(ystring);为了确保所有缓冲区的数据完全进入管道的输出端 pringstram flush();循环完成后 线程关闭管道输出流pringstram close();ythread类的源程序如下 //ythread Java//import Java io ;class ythread exteads thread{datainputstream xfileln;pringstream printstream;ythread(datainputstream xfileln pringstream printstream){this xfileln = xfileln;this printstream = printstream;}public void run(){try{string xstring = xfileln readline();while(xstring!=null){string ystring= xstring replace( x y );printstream pringln(ystring);printstream flush();xstring= xfileln readline();}printstream close();}catch{ioexception e}{system out println(e tostring());}}} pipeapp应用程序使用microsoft visual j++ 编译 lishixinzhi/Article/program/Java/gj/201311/27508

Stackjava

import javautilconcurrentlocksCondition;

import javautilconcurrentlocksLock;

import javautilconcurrentlocksReentrantLock;

public class Stack {

    

    private int[] data;

    private int index;

    private Lock lock;

    private Condition moreSpace;

    private Condition moreEelment;

    

    public Stack(int size){

        thisdata = new int[size];

        thisindex = 0;

        thislock = new ReentrantLock();

        thismoreSpace = locknewCondition();

        thismoreEelment = locknewCondition();

    }

    

    public void push(int value){

        locklock();

        try {

            while(index == datalength){

                moreSpaceawait();

            }

            data[index++] = value;

            moreEelmentsignalAll();

        } catch (InterruptedException e) {

            eprintStackTrace();

        } finally {

            lockunlock();

        }

    }

    

    public int popup(){

        locklock();

        int value = 0;

        try {

            while(index == 0){

                moreEelmentawait();

            }

            value = data[--index];

            moreSpacesignalAll();

        } catch (InterruptedException e) {

            eprintStackTrace();

        } finally {

            lockunlock();

        }

        return value;

    }

}

写入线程 WriteStackjava

import javautilRandom;

public class WriteStack implements Runnable {

    private Stack stack;

    

    public WriteStack(Stack stack){

        thisstack = stack;

    }

    @Override

    public void run() {

        Random r = new Random(SystemcurrentTimeMillis());

        for(int i = 0;i < 10; i++){

            int value = rnextInt(500);

            stackpush(value);

            Systemoutprintf("Write: push %d in stack\n",value);

            try {

                Threadsleep(rnextInt(500));

            } catch (InterruptedException e) {

                eprintStackTrace();

            }

        }

    }

}

读取线程 ReadStackjava

import javautilRandom;

public class ReadStack implements Runnable {

    private Stack stack;

    

    public ReadStack(Stack stack){

        thisstack = stack;

    }

    

    @Override

    public void run() {

        Random r = new Random(SystemcurrentTimeMillis());

        for(int i = 0;i < 10; i++){

            int value = stackpopup();

            Systemoutprintf("Read: popup an element %d\n",value);

            try {

                Threadsleep(rnextInt(500));

            } catch (InterruptedException e) {

                eprintStackTrace();

            }

        }

    }

}

主测试线程 StackExamplejava

public class StackExample {

    public static void main(String[] args) throws InterruptedException {

        Stack stack = new Stack(5);

        WriteStack writeStack = new WriteStack(stack);

        ReadStack readStack = new ReadStack(stack);

        

        Thread writeThread = new Thread(writeStack);

        Thread readThread = new Thread(readStack);

        writeThreadstart();

        readThreadstart();

    }

}

以上就是关于java 中如何用键盘输入全部的内容,包括:java 中如何用键盘输入、java怎么用代理模式实现多窗口运行、java 程序打成exe文件后怎么用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9813988.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存