0

0

菜鸟初学Java的备忘录(十)

黄舟

黄舟

发布时间:2016-12-20 13:56:31

|

1395人浏览过

|

来源于php中文网

原创

回顾一下昨天所学习的基于连接池的socket,其原理中的要点如下:服务器开放有限个pooledconnectionhandler线程用来处理连接;客户的连接请求均加入到pool连接池中(实际是linklist()对象);pooledconnectionhandler一旦发现连接池中有连接请求,就立即着手处理;大家都使用同一个pool(所以它是静态变量)

目前为止,有关java程序设计的一些基本内容都已经学习的差不多了.现在是学以致用的时候了.学习任何语言,要想真正的谈得上入门,都应该以一个实际的编程经验为标志的,我想.

以前用c++编过一个俄罗斯方块,觉得这个游戏的程序设计挺能体现面向对象的思想的.java和c++有很多共同点,依葫芦画瓢谁都会,那么就重新实现一遍吧,反正也忘得差不多了,权当温故知新.另外,既然花了那么多时间来研究socket,那就索性编出一个网络版的来.

俄罗斯方块的程序需要图形用户界面(gui),而前面编的java程序中,只有applet程序实现了图形界面,但那是在appletviewer或者浏览器的帮助下完成的.用java来实现图形用户界面,我们需要用到frame类.frame类是窗口类(windows)类的子类,是图形用户界面的基本窗口.阅读下面一个小程序并实现一下,就基本上可以对java下的图形用户界面有所了解了.

文件名:framememo.java
功能:弹出一个带有菜单的框架并且在框架里显示信息.在窗口中任意位置点击一下,程序退出.

import java.awt.*;

public class framememo extends frame
{
public string motd;

public framememo(string s)
{
super(s);//super在这里代表的是父类,和this所代表的本类相应,因此这里调用的是父类的构造函数
motd=s;
resize(300,300);
setmenu();
}

public framememo()//重载的构造函数
{
this("this is a memo of frame");//这里调用的是framememo(s)构造 函数
setmenu();
}

public void setmenu()
{
menu m,n;
m=new menu("examples");
m.add(new menuitem("basic"));
m.add(new menuitem("simple"));

n=new menu("more examples");
n.add(new menuitem("sub basic"));
m.add(n);

menubar mb=new menubar();
mb.add(m);
setmenubar(mb);
}

public void paint(graphics g)
{
g.drawstring(motd,15,15);
g.drawstring("click anywhere to exit",45,45);

}

public void start()
{
show();
}

public boolean mousedown(event e,int x,int y)
{
hide();//隐藏窗口
dispose();//释放资源
system.exit(0);
return false;
}

public static void main(string args[])
{
framememo m;
m=new framememo();
m.start();
}
}

建立了窗口之后,我们还需要在窗口中摆放各种图形界面对象,也就是说要布局.布局的原理在前面介绍过,需要使用到布局容器,然后把对象按照一定的规则填进去.下面一个例子中演示了大部分我们需要用到的容器.我给出了很具体的注释,帮助我以后一旦忘了java的语法后,可以迅速的寻找失去的记忆.

file://布局范例
file://j2sdk1.4.1下编译通过

import java.awt.*;
import java.applet.*;

public class layout extends frame
{
panel fnames,styles;//两个字体按钮放到fnames这个panel中,三个风格按钮放到styles这个panel中
button sans,serif;
button bold,bigger,smaller;//定义两个字体按钮,三个风格按钮
samplecanvas sample;//定义重载后的画布对象
string fname=new string("sansserif");
int fbold=0;
int fsize=12;

public layout(){
super("a memo of layout");
setfont(new font("sans",font.bold,12));
setlayout(new borderlayout());//设置borderlayout布局,该方式可安排五个元素
file://方位为东西南北中

file://下面的程序为设置底部即南边的两个按钮
fnames=new panel();
fnames.setlayout(new gridlayout(1,2,5,10));//为panel设置gridlayout布局
file://该布局为网格布局
file://四个参数分别为
file://行数,列数,水平间隔(像素),垂直间隔(像素)
sans=new button("sans serif");
fnames.add(sans);
serif=new button("sans serif");
fnames.add(serif); file://分别添加两个按钮

add(fnames,"south"); file://将panel列入borderlayout布局中

file://下面的程序为设置左部即西边的三个按钮
styles=new panel();
styles.setlayout(new gridlayout(3,1,10,5));
bold=new button("bold");
styles.add(bold);
bigger=new button("bigger");
styles.add(bigger);
smaller=new button("smaller");
styles.add(smaller);
add(styles,"west");
sample=new samplecanvas();
add(sample,"center");
setsize(200,200);//这句话别掉罗
// setvisible(true);

}

public void start(){
show();


public static void main(string[] args)//初始化
{
layout mainframe=new layout();
mainframe.start();



class samplecanvas extends canvas
{
string message;

public samplecanvas() file://类的构造函数
{
rewrite("sanserif"); file://只在创建对象的时候执行,java不支持析构函数


public void rewrite(string s)
{
setfont(new font(fname,fbold,fsize));
message="this font is"+fname;
repaint();
}

public void paint(graphics g)
{
g.drawstring(message,10,50);
}
}


(1月28日)在网络版的俄罗斯方块程序中,应该包含有以下几个类:

1.mainframe:主界面类,从frame继续,基本定义及类中方法功能如下

class mainframe extends frame{
public mainframe(){//初始化工作,主要是给对象(按钮,画布等)布局

public boolean keydown(event e,int key){//处理键盘操作

public boolean action(event e,object arg){//处理鼠标操作

public void start(){//看前几天笔记
show();
}
public static void main(string args[]) throws ioexception{
mainframe app;
app=new mainframe();
app.start(); 
}
}

2.maincanvas类.该画布对象将完成所有与方块有关的逻辑操作,从canvas类继续

3.block类,即方块类.该类存有方块的外形的信息(一个多维数组)等等,该类将与maincanvas类相辅相成.实际上也是可以将block和maincanvas做成一个类的,在我原来的c++版本中就是这样的.但是,从面向对象的观点来考虑,分成两个类比较合适.

4.clientthread类,即客户端的线程类

5.serverthread类,即服务器端的线程类

serverthread和clientthread负责网络同步的操作

分析到这一部工作就基本上完成了.我决定放弃具体实现网络版俄罗斯方块的计划,因为重复我曾经十分熟悉的思路是一件十分无趣的事情.

我预备将目标锁定在基于java applet的电子白板的实现上.相关的研究我会放到年后的另一个系列当中.

历时半个月的菜鸟笔记终于结束了.15天对于任何一门语言的入门都已经足够,究竟语言只是体现设计思想的工具,对于任何一种工具的熟悉和使用都不应该花费太多时间.如何用工具打造精美的艺术品才是应该时常在脑海中思考的.

在java入门的过程当中,有三本书给了我不少的帮助.第一本是机械工业出版社的,由一个英国人撰写的.书中语言条理清楚,深入浅出,两天时间就完全可以让你初步把握java的基础.给我的感觉,国外人写最基础的和最深奥的技术类教材都很有一手.第二本是谭浩强主编的,名副其实的入门级参考书,对初学者来说,内容比较齐全.最后一本是chm格式的think in java,帮助我更加深入的了解java,尤其是线程和同步方面的内容.另外,我曾经举过的所有关于socket的范例都源自于网上下的一套如何用java编写socket程序的教材.这套教材也非常实用.

好了,祝cdsn的朋友新年快乐!过 年 去!

附:下载地址
1.书名:java 套接字(socket)101
注释:本教程将告诉您什么是套接字(socket)并教您如何在 java 程序中使用它。通过实际分析几个示例,从单个客户机/服务器通讯到池中的一组客户机访问服务器,您将学到如何用套接字处理现实世界中碰到的典型情形。
url: http://www-900.ibm.com/developerworks/cn/education/java/j-sockets/tutorial/j-sockets.zip

2.书名:think in java(中文版)---chm格式
url: http://www.code-labs.com/manual/think%20in%20java.chm

目前仍然有效 

 以上就是菜鸟初学Java的备忘录(十)的内容,更多相关内容请关注PHP中文网(www.php.cn)! 

黑点工具
黑点工具

在线工具导航网站,免费使用无需注册,快速使用无门槛。

下载

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

28

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

8

2026.01.26

苹果官方查询网站 苹果手机正品激活查询入口
苹果官方查询网站 苹果手机正品激活查询入口

苹果官方查询网站主要通过 checkcoverage.apple.com/cn/zh/ 进行,可用于查询序列号(SN)对应的保修状态、激活日期及技术支持服务。此外,查找丢失设备请使用 iCloud.com/find,购买信息与物流可访问 Apple (中国大陆) 订单状态页面。

31

2026.01.26

npd人格什么意思 npd人格有什么特征
npd人格什么意思 npd人格有什么特征

NPD(Narcissistic Personality Disorder)即自恋型人格障碍,是一种心理健康问题,特点是极度夸大自我重要性、需要过度赞美与关注,同时极度缺乏共情能力,背后常掩藏着低自尊和不安全感,影响人际关系、工作和生活,通常在青少年时期开始显现,需由专业人士诊断。

3

2026.01.26

windows安全中心怎么关闭 windows安全中心怎么执行操作
windows安全中心怎么关闭 windows安全中心怎么执行操作

关闭Windows安全中心(Windows Defender)可通过系统设置暂时关闭,或使用组策略/注册表永久关闭。最简单的方法是:进入设置 > 隐私和安全性 > Windows安全中心 > 病毒和威胁防护 > 管理设置,将实时保护等选项关闭。

5

2026.01.26

2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】
2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】

铁路12306提供起售时间查询、起售提醒、购票预填、候补购票及误购限时免费退票五项服务,并强调官方渠道唯一性与信息安全。

35

2026.01.26

个人所得税税率表2026 个人所得税率最新税率表
个人所得税税率表2026 个人所得税率最新税率表

以工资薪金所得为例,应纳税额 = 应纳税所得额 × 税率 - 速算扣除数。应纳税所得额 = 月度收入 - 5000 元 - 专项扣除 - 专项附加扣除 - 依法确定的其他扣除。假设某员工月工资 10000 元,专项扣除 1000 元,专项附加扣除 2000 元,当月应纳税所得额为 10000 - 5000 - 1000 - 2000 = 2000 元,对应税率为 3%,速算扣除数为 0,则当月应纳税额为 2000×3% = 60 元。

12

2026.01.26

oppo云服务官网登录入口 oppo云服务登录手机版
oppo云服务官网登录入口 oppo云服务登录手机版

oppo云服务https://cloud.oppo.com/可以在云端安全存储您的照片、视频、联系人、便签等重要数据。当您的手机数据意外丢失或者需要更换手机时,可以随时将这些存储在云端的数据快速恢复到手机中。

40

2026.01.26

抖币充值官方网站 抖币性价比充值链接地址
抖币充值官方网站 抖币性价比充值链接地址

网页端充值步骤:打开浏览器,输入https://www.douyin.com,登录账号;点击右上角头像,选择“钱包”;进入“充值中心”,操作和APP端一致。注意:切勿通过第三方链接、二维码充值,谨防受骗

7

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 2.9万人学习

C# 教程
C# 教程

共94课时 | 7.6万人学习

Java 教程
Java 教程

共578课时 | 51.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号