------- android培训、java培训、期待与您交流! ----------
GUI图形用户界面
Java.Awt:Abstract Windows Toolkit(抽象窗口工具包),需要调用本地系统方法实现功能属于重量级控件。
1、FlowLayout 流式布局
API中说明:
流布局一般用来安排面板中的按钮。它使得按钮呈水平放置,直到同一条线上再也没有适合的按钮。线的对齐方式由 align 属性确定。可能的值为:
LEFT
RIGHT
CENTER
LEADING
TRAILING
import java.awt.*;
import java.applet.Applet;
public class myButtons extends Applet {
Button button1, button2, button3;
public void init() {
button1 = new Button("Ok");
button2 = new Button("Open");
button3 = new Button("Close");
add(button1);
add(button2);
add(button3);
}
}
2、BorderLayout边框式布局
API说明:
这是一个布置容器的边框布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST、CENTER。当使用边框布局将一个组件添加到容器中时,要使用这五个常量之一,例如:
Panel p = new Panel(); p.setLayout(new BorderLayout()); p.add(new Button("Okay"), BorderLayout.SOUTH);
为了方便起见,BorderLayout 将缺少字符串说明的情况解释为常量 CENTER:
Panel p2 = new Panel(); p2.setLayout(new BorderLayout()); p2.add(new TextArea()); // Same as p.add(new TextArea(), BorderLayout.CENTER);
此外,BorderLayout 支持相对定位常量 PAGE_START、PAGE_END、LINE_START 和 LINE_END。在ComponentOrientation 设置为 ComponentOrientation.LEFT_TO_RIGHT 的容器中,这些常量分别映射到NORTH、SOUTH、WEST 和 EAST。
3、GridLayout网格布局
API说明:
GridLayout类是一个布局处理器,它以矩形网格形式对容器的组件进行布置。容器被分成大小相等的矩形,一个矩形中放置一个组件。例如,下面是一个将六个按钮布置到三行两列中的applet:
import java.awt.*;
import java.applet.Applet;
public class ButtonGrid extends Applet {
public void init() {
setLayout(new GridLayout(3,2));
add(new Button("1"));
add(new Button("2"));
add(new Button("3"));
add(new Button("4"));
add(new Button("5"));
add(new Button("6"));
}
}
4、CardLayout卡片布局
API说明:
CardLayout 对象是容器的布局管理器。它将容器中的每个组件看作一张卡片。一次只能看到一张卡片,容器则充当卡片的堆栈。当容器第一次显示时,第一个添加到CardLayout 对象的组件为可见组件。
卡片的顺序由组件对象本身在容器内部的顺序决定。CardLayout 定义了一组方法,这些方法允许应用程序按顺序地浏览这些卡片,或者显示指定的卡片。addLayoutComponent(java.awt.Component, java.lang.Object) 方法可用于将一个字符串标识符与给定卡片关联,以便进行快速随机访问。
创建图形化界面的步骤:
1:创建frame窗体。
2:对窗体进行基本设置,比如大小,位置,布局。
3:定义组件
4:将组件通过窗体的add方法添加到窗体中。
5:让窗体显示通过setVisible(true).
class FrameDemo
{
private Frame f;
private Button but;
Frame()
{
init();
}
public void init()
{
f=new Frame("my frame");
//初始化窗体参数
but= new Button("my button");l
f.add(but);
f.setVisible(true);
myEvent();
//显示窗体
private void myEvent()
{
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.out.println("按下关闭时执行的动作");
}
public void windowActivated(WindowEvent e)
{
System.out.println("窗口活动时执行的动作");
}
public void windowOpened(WindowEvent e)
{
System.out.println("当窗口打开时执行的动作");
}
});
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("触发按钮执行的动作");
}
})
but.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
if(e.getClickCount()==2)
System.out.println("双击");
}
})
but.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
按下回车键执行的代码;
}
})
}
}
}
事件监听机制的特点:
1:事件源就是Awt包或Swing包中的那些图形界面的组件。
2:事件:每一个事件源都有自己的特有对应事件和共性事件。
3:监听器:将可以触发某一事件的动作都已经封装到了监听器中。
以上三者,在Java中都已经定义好了,直接获取对象来用就可以了。我们要做的事情就是对产生的动作进行处理。
组件里面不能直接写文本必须要用lable封装成对象添加进去。
网络编程
import java.io.*;
class Udpsend2
{
public static void main(String[] args) throws Exception
{
DatagramSocket ds = new DatagramSocket();//建立udpsocket端口
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));//键盘录入文件
String line = null;
while((line = bufr.readLine())!=null)//读取文件,将数据存入数组。
{
if("886".equals(line))
break;
byte[] buf =line.getBytes();
//封装成数据包
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.102"),10001);
ds.send(dp);//发送
}
ds.close();
}
}
class Udprece2
{
public static void main(String[] args) throws Exception
{
DatagramSocket ds = new DatagramSocket(10001);//建立udpsocket端口,端口要一致。
while(true)
{
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);//封装成数据包
ds.receive(dp);//接收数据
String ip = dp.getAddress().getHostAddress();//获取ip
String data = new String(dp.getData(),0,dp.getLength());//获取数据
System.out.println(ip+"::"+data);
}
}
}
class AwtDemo
{
public static void main(String[] args)
{
Frame f = new Frame("my awt");
f.setSize(500,100);
f.setLocation(300,200);
f.setLayout(new FlowLayout());
Button b = new Button("按钮");
f.add(b);
f.setVisible(true);//使不可见的窗体可见
System.out.println("Hello World!");
}
}