<p><font face="Verdana">JAVA实例程序: 控件的相互控制与消息传递</font><br/></p>
<p><font face="Verdana">import java.awt.*;<br/>import java.awt.event.*;<br/>import javax.swing.*;</font></p>
<p><font face="Verdana">//控件的相互控制与消息传递</font></p>
<p><font face="Verdana">public class Ac
tionDemo extends JFrame{<br/> JTextField jtfName; //名字输入域<br/> JTextArea jtaChat; //显示聊天信息<br/> JTextArea jtaInput; //输入消息<br/> JButton jbSend; //发送消息按钮<br/> JButton jbClear; //清除输入消息域</font></p>
<p><font face="Verdana"> public ActionDemo(){<br/> super("控件的相互控制"); //调用父类构造函数</font></p>
<p><font face="Verdana"> Container container=this.getContentPane(); //得到容器<br/> JPanel p=new JPanel(); //初始化一个面板<br/> jtfName=new JTextField(10); //初始化名字输入域<br/> p.add(new JLabel("主题:Write Once, Run Anywhere. ")); //增加聊天题标签<br/> p.add(new JLabel("昵称")); //增加昵称标签<br/> p.add(jtfName); //增加名字输入域<br/> container.add(p,BorderLayout.NORTH); //在容器上增加面板</font></p>
<p><font face="Verdana"> jtaChat=new JTextArea(); //初始化信息显示文本框<br/> container.add(new JScrollPane(jtaChat),BorderLayout.CENTER); //在容器上增加信息显示文本框</font></p>
<p><font face="Verdana"> Box box=new Box(BoxLayout.X_AXIS); //初始化一个Box<br/> jtaInput=new JTextArea(3,20); //初始化消息输入域<br/> jbSend=new JButton(); //初始化发送按钮<br/> jbClear=new JButton(); //初始化清除按钮<br/> jbClear.setText("清除"); //设置按钮文本<br/> box.add(new JScrollPane(jtaInput)); //增加消息输入域<br/> box.add(jbClear); //增加按钮<br/> box.add(jbSend);<br/> container.add(box,BorderLayout.SOUTH); //在容器上增加box</font></p>
<p><font face="Verdana"> jbClear.addActionListener(new ActionListener(){ //清除按钮事件处理<br/> public void actionPe
RFormed(ActionEvent e){<br/> jtaInput.setText(""); //点击清除按钮时清除输入域的信息<br/> }<br/> });</font></p>
<p><font face="Verdana"> Action sendMessage = new AbstractAction() { //发送消息Action<br/> public void actionPerformed(ActionEvent e){<br/> replaceMessage(); //更新消息显示框<br/> }<br/> };<br/> jtaInput.getInputMap().put(KeyStroke.getKeyStroke("ENTER"),"send"); //键盘事件处理,按受回车事件<br/> jtaInput.getActionMap().put("send",sendMessage); //回车时的处理(调用发送消息Action)</font></p>
<p><font face="Verdana"> jbSend.setAction(sendMessage); //设置
命令为发送消息<br/> jbSend.setText("发送"); //设置按钮文本</font></p>
<p><font face="Verdana"> setSize(400,200); //设置窗口尺寸<br/> setVisible(true); //设置窗口可视<br/> setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序<br/> }</font></p>
<p><font face="Verdana"> private void replaceMessage(){<br/> String message=jtfName.getText()+"> "+jtaInput.getText()+"\n"; //得到消息文本<br/> jtaChat.insert(message,jtaChat.getDocument().getLength()); //插入消息到显示域未端<br/> jtaInput.setText(""); //清空输入消息域<br/> }</font></p>
<p><font face="Verdana"> public static void main(String[] args){<br/> new ActionDemo();<br/> }<br/>}</font></p>
<br/>
0