Java对于服务器 个人电脑和移动设备来说是一项伟大的技术 由于需要java的跨平台的特性 因此java在服务器和移动设备方面的应用是非常成功的 但java在个人电脑应用方面的情况和在服务器及移动设备方面的应用有所不同 但是这很快就会有所改变 至少比你想象得要快 在这篇文章中 我会分析一下java在桌面环境中的应用将怎样得到提升 然后具体说一下java GUI(用户图形接口)的三个主要的工具:AWT Swing 和SWT 在下文中 我将会开发一个完整的java桌面应用程序 Java与桌面端 现在 流行的桌面平台要数Windows Mac and Linux了 但它们不是十全十美的 Windows主宰著桌面 *** 作系统的市场 其上有巨大的应用和开发群体 但它昂贵且有许多安全漏洞 Linux有着稳固的基础 它是开源的软件 比Windows更可靠 Macs非常容易 *** 作且不是黑客的目标 但与Windows和Linux比起来 Mac的硬件和软件可选的余地非常的有限 公司和个人选择他们的 *** 作系统基于许多因素 花费少且安全性高是首选的因素 这导致一些组织从Windows 系统转而选择Linux 对许多用户来说 可用性及对原有应用程序的支持是非常重要的因素 这意味着Windows 将继续享有巨大的市场 Mac有其自己忠诚的用户 这使得苹果机仍然可以存活 Linux 在桌面的流行及Mac的成功创造了多样性 这种多样性正是Java需要的 这种多样性使得Java在桌面有举足轻重的地位 跨平台的支持 Java 运行于所有相关的 *** 作系统 包括Windows Mac和Linux 对于任何组织 他想把现有的应用从一个 *** 作系统移植到另一个 *** 作系统而不用做太多的改动 那么Java正是他们首选的桌面开发平台 或许用微软的可视化工具很容易构建 NET应用 但是这将使你被绑定在了Windows平台上了 很多人也许想立刻用Linux 代替Windows 从而避免由微软件 *** 作系统的漏洞带来的问题 用户不能容忍的问题之一是当从Windows移植到Linux带来的巨大的费用 如果你的应用程序用Java构建 你就没有了这些问题 Java的图形用户界面看上去会跟你用的 *** 作系统一样 而并不需要做什么改动 假如有一天又有一种桌面 *** 作系统出现的话 java 是个安全的赌注 因为它现在能够运行在Windows和Linux 上 那么可以推测它也可以运行在将来可能出现的 *** 作系统上 这些 *** 作系统可能或迟或早地由微软 或是开源社区 或是其它的人开发出来 丰富的特征 最初 Java只有非常有限的一些特征去构建图形用户界面 思想就是用平台无关的Java应用程序接口打包不同的 *** 作系统的本地图形用户界面 称之为抽象的窗口工具 仅有普通的部件如文件域 文本区 选择框 单选按钮 列表框和按钮被AWT支持 图形和图像的特性支持非常有限 也就是说 只足够构建简单的applet程序 认识到需要更高级的图形用户界面组件和图形能力 Sun公司开发了Swing Java D Java D 图像的输入/输出 Java高级图像(JAI)和很多其它的 这些中的一些窗体组件现在已经是Java 标准版(J SE)里的一部分 并且其它的一些扩展必须和你的应用程序打包在一起 例如Swing Java D 图像的输入/输出都是Java的核心API 随着Java开发工具包(JDK)和Java运行环境一起提供 让我们不要忘了J EE平台 如果你开发服务器端的应用程序并且需要丰富的图形用户界面 那么你毫无疑问应该选择Java 这允许你把服务器端的一些代码移到客户端 反之亦然 例如 一个项目可能开始是基于WEB和图形界面 在某些时候 用户可能要求图形元素不能在HTML中实现 如果你选择java做客户端应用 那么你可以重用这些当初用来做服务器端的代码 如果你用远程调用 一些类会真正地实现服务器和客户端的共享 通过页面服务器 Java桌面应用也能够和其它的Java 或非Java应用程序通信 如CORBA TCP/IP 或是 >
学习java的第一步是学会使用java程序语言编写程序,学习程序语言的第一步是熟悉其语法的使用。编程语言是一种语言,不同的是,这种语言是用来和计算机交流的,所以如果你想熟悉这种语言,北大青鸟云南计算机学院认为不是看别人写程序来理解,而是应该学习别人是如何使用Java解决问题的。
二、学会使用搜索引擎
作为开发人员,了解使用搜索引擎找到问题的答案是非常必要的能力。对于程序员来说,北大青鸟发现很多人比较喜欢使用谷歌浏览器,可以用几个简单的关键字找到问题的答案。
三、使用论坛参加讨论
在学习过程中,如果有人能一起讨论,那么对于加快学习的速度有很大的帮助。昆明计算机学校建议你可以找一个论坛,浏览开发相关资源,这样可以节省很多学习时间。在中文论坛上,可以选择参与Java技术论坛,在论坛上有很多丰富的资源。
四、有自己的学习地图
在学习了基本的j2se之后,可以使用实际应用Java编写程序。如果需要编写窗口程序,那么可以学习Swing窗口的设计;如果要编写数据库相关软件,那么云南java培训建议学习JDB;如果您想做Web程序,可以学习JSP/Servlet;如果您想了解移动程序的开发,那么可以选择j2me方向进行学习。
如果你在IDEA中编写了一个Java倒计时程序,并且想在手机上运行,那么在运行之前,你需要确保你的手机已经获得了应用程序的权限。下面是一些需要注意的事项。
首先,你需要将你的Java程序打包成一个Android应用程序。在Android应用程序中,有一些需要获取的权限,例如网络权限、读写SD卡权限等等。这些权限可以在AndroidManifestxml文件中设置。
其次,如果你要在手机上运行你的Java倒计时程序,你需要确保你的手机已经开启了USB调试模式,并且将手机通过USB连接到电脑上。这样才能够将程序安装到手机上。
最后,你需要在手机上安装Java Runtime Environment (JRE)。JRE是一个Java平台的核心组件,它包含了Java虚拟机和Java类库等。如果你的手机上没有安装JRE,那么你的Java程序是无法运行的。
总之,要在手机上运行你的Java倒计时程序,你需要确保你的手机已经获得了应用程序的权限,并且已经开启了USB调试模式,并且将手机通过USB连接到电脑上,以便于将程序安装到手机上。此外,你还需要在手机上安装Java Runtime Environment (JRE)。
很久以前写过这么个:
//TimerLabeljava
package timerlabel;
import javaawtFont;
import javaxswingJLabel;
import javaxswingJOptionPane;
import javalangThreadState;
/
计时标签
@author Jeky
/
public class TimerLabel extends JLabel {
private int maxTime;
private int count;
private static final int SECOND = 1000;
private static final int FONT_SIZE = 36;
private Thread thread;
private boolean pause;
private boolean start;
/
新建一个计时标签
@param maxTime 倒计时起始时间
/
public TimerLabel(int maxTime) {
thissetHorizontalAlignment(JLabelCENTER);
thissetFont(new Font("Times New Roman", FontBOLD, FONT_SIZE));
thispause = false;
setMaxTime(maxTime);
}
/
修改倒计时起始时间
@param maxTime 新的起始时间
/
public void setMaxTime(int maxTime) {
if (thisstart) {
return;
}
thismaxTime = maxTime;
thiscount = maxTime;
initText();
thisthread = new Thread(new Runnable() {
@Override
public void run() {
while (count != 0) {
try {
if (!start) {
count = 0;
initText();
break;
}
if (!pause) {
Threadsleep(SECOND);
count--;
initText();
}
} catch (InterruptedException ex) {
pause = true;
}
}
done();
}
});
thisstart = false;
}
/
倒计时完成后调用此方法
/
protected void done() {
JOptionPaneshowMessageDialog(this, "Time up!");
}
/
标签字符由此方法设置
/
protected void initText() {
String min = StringvalueOf(count / 60);
String sec = StringvalueOf(count % 60);
while (minlength() < 2) {
min = "0" + min;
}
while (seclength() < 2) {
sec = "0" + sec;
}
thissetText(min + ":" + sec);
}
/
暂停
/
public void pause() {
if (start) {
threadinterrupt();
}
}
/
检测标签倒计时是否开始
@return 如果开始返回true
/
public boolean isStart() {
return start;
}
/
得到倒计时起始时间
@return 倒计时起始时间
/
public int getMaxTime() {
return maxTime;
}
/
检测标签倒计时是否暂停
@return 倒计时暂停返回true
/
public boolean isPause() {
return pause;
}
/
从暂停中恢复计时
/
public void continueDo() {
if (thispause) {
thispause = false;
}
}
/
取消计时
/
public void stop() {
if (start) {
start = false;
}
}
/
开始计时
/
public void start() {
if (threadgetState()equals(StateNEW)) {
start = true;
threadstart();
} else if (threadgetState()equals(StateTERMINATED)) {
setMaxTime(maxTime);
start = true;
threadstart();
}
}
}
//演示程序 Testjava
package timerlabel;
import javaawtBorderLayout;
import javaawtFlowLayout;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaxswingJButton;
import javaxswingJFrame;
import javaxswingJPanel;
import javaxswingJTextField;
/
@author Jeky
/
public class Test extends JFrame {
private TimerLabel label;
private static final int GAP = 10;
private JButton runButton;
private JButton pauseButton;
private JButton setButton;
private JButton stopButton;
private JTextField time;
public Test() {
label = new TimerLabel(10);
JPanel panel = new JPanel(new FlowLayout(FlowLayoutCENTER, GAP, GAP));
runButton = new JButton("Start");
runButtonaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
labelstart();
}
});
paneladd(runButton);
pauseButton = new JButton("Pause");
pauseButtonaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (labelisStart()) {
if (!labelisPause()) {
labelpause();
pauseButtonsetText("Continue");
} else {
labelcontinueDo();
pauseButtonsetText("Pause");
}
}
}
});
paneladd(pauseButton);
time = new JTextField(10);
paneladd(time);
setButton = new JButton("setMaxTime");
setButtonaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
labelsetMaxTime(IntegerparseInt(timegetText()));
}
});
paneladd(setButton);
stopButton = new JButton("Stop");
stopButtonaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
labelstop();
}
});
paneladd(stopButton);
thisgetContentPane()add(label, BorderLayoutCENTER);
thisgetContentPane()add(panel, BorderLayoutSOUTH);
thissetVisible(true);
thissetSize(500, 300);
thissetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Test();
}
}
试试吧
从零开始学习Java,一定要是从基础内容进行学起,这个也是要在学习的时候多加注意,因为现在有的培训机构课程安排其实并不是从最基础的开始的。下边小编就简单的来介绍一下Java从零基础学习都是学习那价格阶段,学习一些什么内容。
对于新手来说,要想学好Java,应该注重以下几个方面:
第一:正确理解Java的各种“抽象”。学习Java就是学习各种“抽象”,包括类、接口和抽象类等,不同层次的抽象意味着不同的作用。
第二:注重知识结构的全面性。学习Java开发的过程中要系统地学习一下 *** 作系统、计算机网络、数据结构、算法设计和数据库知识,这些计算机基础内容对于学习Java具有重要的意义,如果想在Java开发领域走得更远,一定要注重基础知识的学习。
第三:确定一个主攻方向。Java目前主要的应用领域包括软件开发、Android开发和大数据开发等多个行业。对于Java初学者来说,建议根据自身的实际情况和需求爱好,选择一个适合自己的主攻方向。
从哪里开始学呢?
1、java 基础
精通不用说,至少常用的应该精通。你一定熟悉JDK带来的一些常用命令及其常用选项。命令至少需要熟悉:appletviewer、HtmlConverter、jar、java、javac、javadoc、javap、javaw、native2ascii、serialver。
2、各种工具的使用
必须熟练使用至少一种IDE开发工具,如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或Workshop,包括项目管理、常用选项设置、插件安装配置、调试等。
3、j2ee 框架
用java做WEB应用,j2ee框架是必不可少的。目前使用的主要有1)struts、2)spring、3)hibernate、4)ibatis、<@其他一些类似的框架如5)spirngMvc等,以及常用的缓存框架如memcached、ehcache、oscache等。
4、数据库基础
目前数据库主要是关系型数据库。该产品包括 oracle mysql sqlserver db2。需要掌握基本用法,根据业务逻辑设计表、索引、视图、存储过程、函数等。
5、设计模式
了解常用设计模式的优缺点,能绘制常用设计模式的UML图,了解并能够在适当的时候使用它们来解决问题。
本文实例形式详述了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 )
以上就是关于Java桌面端程序开发全部的内容,包括:Java桌面端程序开发、新手应该如何学习Java编程语言、idea 写了一个java倒计时程序自用。自己用。在手机上运行还要设置权限吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)