单击JButton时不会发生相应的事件
来源:互联网 发布:linux中压缩命令 编辑:程序博客网 时间:2024/06/05 00:15
package ServerAndClient;import javax.swing.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*;import java.net.*;public class Server extends JFrame implements ActionListener{private JTextArea textareareceiveorsend;private JTextField textfieldtosend;private String texttosend=null;private JButton sendbutton;private ServerSocket server;private Socket client;public Server(){super("Server");JPanel panel=new JPanel();setContentPane(panel);panel.setLayout(null);textareareceiveorsend=new JTextArea(">>wait for connection\r\n");textareareceiveorsend.setLineWrap(true);textareareceiveorsend.setBounds(0,0, 500,300);panel.add(textareareceiveorsend);textfieldtosend=new JTextField();textfieldtosend.setBounds(50,320,400, 30);panel.add(textfieldtosend);sendbutton=new JButton("发送");sendbutton.setBounds(215,400,70, 30);panel.add(sendbutton);this.setSize(500,500);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);waitForConnection();writeTextInTextarea();<pre name="code" class="java">sendbutton.addActionListener(this);}public void waitForConnection(){final int PORT=4040;try {server=new ServerSocket(PORT);client=server.accept();textareareceiveorsend.append("connect with"+client.getLocalAddress()+"\r\n");}catch (IOException e) {e.printStackTrace();}}public void writeTextInTextarea(){try{BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));while(true){String text=in.readLine();if(text.equals("byebye")){textareareceiveorsend.append(text+"\r\n");break;}else{textareareceiveorsend.append("<<"+text+"\r\n");}}}catch(IOException e){e.printStackTrace();}}public void actionPerformed(ActionEvent e){texttosend=textfieldtosend.getText();textareareceiveorsend.append(">>"+texttosend+"\r\n");textfieldtosend.setText("");PrintWriter out;try {out = new PrintWriter(client.getOutputStream(),true);out.println(texttosend);} catch (IOException e1) {// TODO 自动生成的 catch 块e1.printStackTrace();}}}如上面那段服务器端代码所示,在addActionListener前面还有两个方法,会造成点击JButton没有反应的情况,其实仔细想一想就能明白原因,在那两个方法中有相关的语句是从客户端中读取客户端发送来的信息,如果客户端一直不发送来信息,那么线程就会阻塞在那里,当然点击方法后面的JButton就不会有任何反应,解决方案就是将addActionListener放在这两个方法的前面。建议初始化完一个按钮后就立刻添加addActionListener,不要在这中间在穿插其他语句。
0 0
- 单击JButton时不会发生相应的事件
- JTable中嵌套JButton并加入JButton的事件处理
- 树控件的单击相应
- 双击 单击 CLISTbOX 同时相应 单击 双击 事件 ~~~
- ListView同时相应长按点击事件和单击事件的解决方法
- UITouch与手势中取消双击时的单击相应
- 根据数据库的记录动态生成菜单并添加相应的单击事件
- JAVA Swing JButton按钮的事件响应
- 为什么谷歌不会发生“魏则西事件”?
- MFC 通过发送消息完成按钮操作模拟鼠标单击事件的发生的问题
- 鼠标的单击事件
- UIView上添加了一个按钮和一个单击手势的事件相应,互相不影响的处理方法。。
- UIView上添加了一个按钮和一个单击手势的事件相应,互相不影响的处理方法。。
- UIView上添加了一个按钮和一个单击手势的事件相应,互相不影响的处理方法。。
- UIView上添加了一个按钮和一个单击手势的事件相应,互相不影响的处理方法。。
- 解绑单击对象的单击事件 不能再次单击
- JButton追加事件监听
- 【java】事件监听——通过点击不同的按钮,让面板的背景色发生相应的变化
- servlet开发6-接收用户提交的表单数据
- Struts2 标签库讲解
- ALCATEL分机转接分机或手机设置
- 查看Android源码版本
- Eclipse导入spring-framework-3.2.*源码
- 单击JButton时不会发生相应的事件
- Python之《机器学习系统设计》第十一章
- Django transaction
- Lua 语言 15 分钟快速入门
- 记一次做死的ubuntu无线驱动更新
- VLD(Visual LeakDetector)内存泄露库的使用
- 金明的预算方案 2006年NOIP全国联赛提高组
- linux内核编译__devinit错误解决办法
- Android常用工具类