关于DataOutputStream和DataInputStream的练习 package com.jimzhai.datastream; import java.io.*; public class DataStream { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ByteArrayOutputStream mybyte = new ByteArrayOutputStream(); DataOutputStream mydata = null; mydata = new DataOutputStream(mybyte); try { mydata.writeDouble(Math.random()); ByteArrayInputStream myInbyte = new ByteArrayInputStream(mybyte.toByteArray()); DataInputStream myIn = new DataInputStream(myInbyte); System.out.println(0.2356896d); mydata.flush(); mydata.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package com.java; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JFrametest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub new ActionDemo(); } } class ActionDemo extends JFrame{ JTextField jtfName;//在此输入姓名 JTextArea jtaChat;//显示聊天信息 JTextArea jtaInput;//输入聊天信息 JButton jbSend;//发送消息按钮 JButton jbClear;//清除输入消息框中的内容 public ActionDemo(){//构造器 super("Hello win");//调用父类构造函数(给程序添加标题) Container container = getContentPane();//得到容器 JPanel panel = new JPanel();//从初始化面板 jtfName = new JTextField(10);//初始化名字输入域 panel.add(new JLabel("主题:Write Once,Run Anywhere! "));//增加聊天标签 panel.add(jtfName);//加入名字输入域 container.add(panel,BorderLayout.NORTH);//在容器上上增加面板 jtaChat = new JTextArea();//初始化信息显示文本框 container.add(new JScrollPane(jtaChat),BorderLayout.CENTER);//添加信息显示文本框 Box box = new Box(BoxLayout.X_AXIS);//初始化一个Box jtaInput = new JTextArea(3,20);//初始化消息输入域 jbSend = new JButton();//初始化发送按钮 jbClear = new JButton();//初始化清除按钮 jbClear.setText("清除");//设置按钮文本 box.add(new JScrollPane(jtaInput));//增加消息输入域 box.add(jbClear);//增加按钮 box.add(jbSend); container.add(box,BorderLayout.SOUTH);//在容器上增加Box jbClear.addActionListener(new ActionListener(){//清除按钮的事件监听 public void actionPerformed(ActionEvent e){ jtaInput.setText(""); } }); Action sendMessage = new AbstractAction(){//发送消息Action public void actionPerformed(ActionEvent e){ replaceMessage();//更新消息显示框 } }; jtaInput.getInputMap().put(KeyStroke.getKeyStroke("ENTER"),"send");//接受回车事件 jtaInput.getActionMap().put("send",sendMessage);//回车事件的处理(调用发送消息Action) jbSend.setAction(sendMessage);//设置命令为发送消息 jbSend.setText("发送");//设置按钮文本 setVisible(true);//设置窗口可视 setSize(400,200);//设置窗口大小 setLocation(300,300);//设置窗口显示位置 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭程序时退出窗口 } private void replaceMessage(){ String message = jtfName.getText()+">"+jtaInput.getText()+"\n";//得到消息文本 jtaChat.insert(message,jtaChat.getDocument().getLength());//插入消息到显示区域末端 jtaInput.setText("");//清空输入消息域 } }
BoxLayout:
X_AXIS
指定组件应该从左到右放置。
Y_AXIS
指定组件应该从上到下放置。
Box
public class Box
使用 BoxLayout 对象作为其布局管理器的一个轻量级容器。Box 提供几个对使用 BoxLayout 的容器(甚至非 Box 容器)有用的类方法。
Box
类可以创建几种影响布局的不可见组件:glue、struts 和 rigid 区域。如果 Box
包含的所有组件都有一个固定大小,可以使用 glue 组件(由 createGlue
返回)来控制组件的位置。如果想让两个组件之间有一个固定的空间量,可以尝试使用 strut(createHorizontalStrut
或 createVerticalStrut
)。如果需要一个总是占用相同空间量的不可见组件,可以通过调用 createRigidArea
获得。
今天的收获:
今天开始复习线程,不过感觉忘得差不多了!压力啊。今天的不足:
对事件监听的复习力度还是不够。