JAVA图形用户界面及网络编程.docx
《JAVA图形用户界面及网络编程.docx》由会员分享,可在线阅读,更多相关《JAVA图形用户界面及网络编程.docx(18页珍藏版)》请在冰豆网上搜索。
![JAVA图形用户界面及网络编程.docx](https://file1.bdocx.com/fileroot1/2022-12/29/9acd402a-d5c3-40b3-a6de-f4ebad46a0b3/9acd402a-d5c3-40b3-a6de-f4ebad46a0b31.gif)
JAVA图形用户界面及网络编程
北华大学开放实习报告
实验项目名称JAVA图形用户界面及网络编程
所属课程名称面向对象程序设计——JAVA
实验类型验证性
实验日期2013.10.16
班级信息11-2
学号34号
姓名
成绩
【实验题目名称】:
JAVA图形用户界面家网络编程
【实验目的与要求】:
(1)目的
1、熟悉Swing的基本组件,包括文本输入框、多行文本输入框、按钮、列表框等多种布局方式,掌握窗口菜单和快捷菜单设计方式;
2、理解委托时间处理模型,掌握不同组件、不同事件的事件处理方法,设计出能够响应事件的Java图形用户界面。
3、熟悉常用的布局管理器
4、了解GUI图像用户界面的设计方法
5、掌握Java组件的事件处理机制
6、熟悉在组件上绘图的方法。
(2)要求
1、学生应做到独立上机操作
2、编程前应将程序的设计构想完成,主要包括所要创建的类的结构及属性和行为。
3、上机输入和调试自己所编的程序,并存在自己的软盘上。
4、检查实验结果是否正确。
5、上机结束后,写出实验报告,要求附运行界面、源代码。
实验报告中应对实验结果进行
分析,尤其是针对错误输出的分析
【实验环境】:
PC机一台
JDK1-6
Eclipse开发环境
【实验原理及方案设计】:
图形用户界面(GraphicsUserInterface,GUI)为应用程序提供了一个图形化的界面。
GUI使用图形的方式,借助菜单,按钮等标准界面元素和鼠标操作,帮助用户方便的向计算机系统发出命令、启动操作,并将系统运行的结果同样以图形的方式显示给用户。
在Java2DAPI中,各种文字都是意图形的方式输出。
以图形的方式绘制文字需要使用Graphics类和Graphics2D类提供的绘制文字的成员方法。
Color类定义了许多个有颜色的常量和成员方法供编程中使用。
不论使用哪种构造方法来创建Color对象,都需要制定新建颜色中的R(红)、G(绿)、B(蓝)三色的比例。
Java.awt包中共定义了五种布局管理器类,分别是BoderLayout、FlowLayout、CardLayout和GridBagLayout。
这五个类都是java.lang.Object类的直接子类,且每个布局管理其对应一种布局策略。
Javax.swing包中定义了4种布局管理器,分别是BoxLayout、ScrollPaneLayout、ViewportLayout和OverlayLayout。
【实验过程】:
(实验步骤、记录、数据、分析)
1、实验步骤:
新建工程
新建类
输入源程序
保存并编译java
运行java应用程序
2、实验内容、源代码及运行结果:
1)、获取主机IP地址
importjavax.swing.*;
importjava.applet.Applet;
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
import.*;
publicclasstimu1extendsJAppletimplementsActionListener
{
Containercp=getContentPane();
JLabellb1=newJLabel("IPI地址:
",JLabel.CENTER);
JTextFieldtf1=newJTextField(20);
JButtonbt1=newJButton("获取IP地址");
JButtonbt2=newJButton("退出系统");
StringIP=null;
publicvoidinit()
{
cp.setLayout(newFlowLayout());
cp.add(lb1);
cp.add(tf1);
cp.add(bt1);
bt1.addActionListener(this);
cp.add(bt2);
bt2.addActionListener(this);
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==bt1)
{
try
{
InetAddressia=InetAddress.getLocalHost();
IP=ia.getHostAddress();
}
catch(UnknownHostExceptiong)
{g.printStackTrace();}
tf1.setText(IP);
}
}
}
运行结果:
2、创建URL对象
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
import.InetAddress;
import.UnknownHostException;
import.MalformedURLException;
import.URL;
publicclassurllextendsJFrameimplementsActionListener
{
staticURLmyURL=null;
Containerctp=getContentPane();
Fontfont;
JTextFieldtf1=newJTextField(10);
JLabellb=newJLabel("网页地址");
JButtonjb=newJButton("验证");
urll()
{
font=newFont("宋体",Font.BOLD,10);
ctp.setLayout(newFlowLayout());
lb.setFont(font);
lb.setForeground(newColor(0,0,150));
ctp.add(lb,BorderLayout.CENTER);
ctp.add(tf1,BorderLayout.SOUTH);
ctp.add(jb,BorderLayout.NORTH);
jb.addActionListener(this);
setSize(300,150);
setVisible(true);
}
publicstaticvoidmain(String[]args)throwsMalformedURLException{
urllcc=newurll();
myURL=newURL("http:
//netbeans.org/docs/java/quickstart.html");
}
publicvoidactionPerformed(ActionEvente)
{
Stringrbt=e.getActionCommand();
if("验证"==rbt)
{
tf1.setText(myURL.toString());
}
}
}
运行结果:
3、获取URL的端口
import.MalformedURLException;
import.URL;
publicclassa
{
publicstaticvoidmain(Stringargs[])
{
URLMyURL=null;
try
{
MyURL=newURL("");
}
catch(MalformedURLExceptione)
{
System.out.println("MalformedURLException:
"+e);}
System.out.println("请输入一个完整的网址:
\n"+MyURL.toString());
System.out.println("这个网址使用的端口号是:
"+MyURL.getPort());
}
}
运行结果:
4、提取URL协议名称
import.MalformedURLException;
import.URL;
publicclassc151
{
publicstaticvoidmain(Stringargs[])
{
URLMyURL=null;
try
{
MyURL=newURL("");
}
catch(MalformedURLExceptione)
{
System.out.println("MalformedURLException:
"+e);}
System.out.println("请输入一个完整的网址:
\n"+MyURL.toString());
System.out.println("这个网址的主机名是:
"+MyURL.getHost());
System.out.println("这个网址的URL协议名:
"+MyURL.getProtocol());
}
}
运行结果:
5、设置连接超时
importjava.awt.BorderLayout;
importjava.io.IOException;
import.ServerSocket;
import.SocketTimeoutException;
importjavax.swing.JFrame;
importjavax.swing.JOptionPane;
importjavax.swing.JScrollPane;
importjavax.swing.JTextArea;
publicclasschaoshilianjieextendsJFrame{
privatestaticfinallongserialVersionUID=1L;
privateServerSocketserver;
privateJTextAreajt;
publicstaticvoidmain(String[]args){
chaoshilianjieframe=newchaoshilianjie();
frame.setVisible(true);
frame.getserver();
}
publicchaoshilianjie(){
setTitle("连接超时");
setBounds(350,200,300,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JScrollPanejs=newJScrollPane();
getContentPane().add(js,BorderLayout.CENTER);
jt=newJTextArea();
js.setViewportView(jt);
}
publicvoidgetserver(){
try{
server=newServerSocket(1880);
server.setSoTimeout(10000);
jt.append("服务器套接字已经创建成功\n");
while(true){
jt.append("等待与各户连接……\n");
server.accept();
}
}catch(SocketTimeoutExceptione){
jt.append("连接超时");
JOptionPane.showMessageDialog(null,"连接超时……");
System.exit(9);
}catch(IOExceptione){
e.printStackTrace();
}
}
}
运行结果:
6、单向通讯
7、使用Socket传输图片
importjava.awt.EventQueue;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.border.EmptyBorder;
importjavax.swing.UIManager;
importjavax.swing.GroupLayout;
importjavax.swing.GroupLayout.Alignment;
importjavax.swing.JLabel;
importjavax.swing.JTextField;
importjavax.swing.LayoutStyle.ComponentPlacement;
importjavax.swing.JButton;
importjava.awt.Font;
publicclassdanextendsJFrame{
privatestaticfinallongserialVersionUID=-7271269958119825302L;
privateJPanelcontentPane;
privateJTextFieldtextField;
privateJTextFieldtextField_1;
privateJTextFieldtextField_2;
publicstaticvoidmain(String[]args){
EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
try{
danframe=newdan();
frame.setVisible(true);
}catch(Exceptione){
e.printStackTrace();
}
}
});
}
publicdan(){
setBackground(UIManager.getColor("Button.disabledForeground"));
setForeground(UIManager.getColor("Button.shadow"));
setTitle("\u670D\u52A1\u5668\u7AEF\u7A0B\u5E8F");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,450,126);
contentPane=newJPanel();
contentPane.setBorder(newEmptyBorder(5,5,5,5));
setContentPane(contentPane);
JLabellblNewLabel=newJLabel("\u8DEF\u5F84\uFF1A");
lblNewLabel.setFont(newFont("隶书",Font.BOLD,16));
textField=newJTextField();
textField.setColumns(10);
JButtonbtnNewButton=newJButton("\u9009\u62E9\u56FE\u7247");
btnNewButton.setBackground(UIManager.getColor("ComboBox.selectionBackground"));
btnNewButton.setFont(newFont("隶书",Font.BOLD,16));
JButtonbtnNewButton_1=newJButton("\u53D1\u9001");
btnNewButton_1.setBackground(UIManager.getColor("ComboBox.selectionBackground"));
btnNewButton_1.setFont(newFont("隶书",Font.BOLD,16));
textField_1=newJTextField();
textField_1.setText("\u670D\u52A1\u5668\u7AEF\u9009\u62E9\u7684\u8981\u53D1\u9001\u7684\u56FE\u7247");
textField_1.setBackground(UIManager.getColor("ComboBox.disabledBackground"));
textField_1.setColumns(10);
textField_2=newJTextField();
textField_2.setText("\u63A5\u6536\u5230\u5BA2\u6237\u7AEF\u53D1\u9001\u7684\u56FE\u7247");
textField_2.setBackground(UIManager.getColor("ComboBox.disabledBackground"));
textField_2.setColumns(10);
GroupLayoutgl_contentPane=newGroupLayout(contentPane);
gl_contentPane.setHorizontalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(lblNewLabel)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(textField,GroupLayout.PREFERRED_SIZE,113,GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(btnNewButton)
.addGap(18)
.addComponent(btnNewButton_1))
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(textField_1,GroupLayout.PREFERRED_SIZE,186,GroupLayout.PREFERRED_SIZE)
.addGap(18)
.addComponent(textField_2,GroupLayout.PREFERRED_SIZE,159,GroupLayout.PREFERRED_SIZE)))
.addContainerGap(60,Short.MAX_VALUE))
);
gl_contentPane.setVerticalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addContainerGap()
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(lblNewLabel)
.addComponent(textField,GroupLayout.PREFERRED_SIZE,GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
.addComponent(btnNewButton_1)
.addComponent(btnNewButton))
.addPreferredGap(ComponentPlacement.RELATED,20,Short.MAX_VALUE)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(textField_1,GroupLayout.PREFERRED_SIZE,GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
.addComponent(textField_2,GroupLayout.PREFERRED_SIZE,GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)))
);
contentPane.setLayout(gl_contentPane);
}
}
运行结果:
程序代码:
importjava.awt.EventQueue;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.border.EmptyBorder;
importjavax.swing.GroupLayout;
importjavax.swing.GroupLayout.Alignment;
importjavax.swing.JLabel;
importjava.awt.Font;
importjavax.swing.JTextField;
importjavax.swing.LayoutStyl