在按钮on_click事件中加上楼上所说的

解决方案 »

  1.   

    问题没有解决。
    我的代码如下,可是按下关闭按钮时,调试信息显示错误,见后文。
      Socket socket1;//连接按钮的事件
      void jBtncon_actionPerformed(ActionEvent e) {
        int port = Integer.parseInt(jTextField3.getText().trim());
      try {
        Socket socket1 = new Socket(jFormattedTextFieldIP.getText(), port);
      }
      catch (IOException ex) {
      }
      }//关闭连接
      void jButton3_actionPerformed(ActionEvent e) {
    //    jBtncon_actionPerformed(ActionEvent e)
    //test();
    try {
      socket1.close();
    }
    catch (IOException ex) {
    }  }
    调试信息
    C:\JBuilder9\jdk1.4\bin\javaw -classpath ";C:\JBuilder9\thirdparty\junit3.8\junit.jar;C:\JBuilder9\lib\unittest.jar;C:\JBuilder9\jdk1.4\demo\jfc\Java2D\Java2Demo.jar;C:\JBuilder9\jdk1.4\demo\plugin\jfc\Java2D\Java2Demo.jar;C:\JBuilder9\jdk1.4\jre\lib\charsets.jar;C:\JBuilder9\jdk1.4\jre\lib\jaws.jar;C:\JBuilder9\jdk1.4\jre\lib\jce.jar;C:\JBuilder9\jdk1.4\jre\lib\jsse.jar;C:\JBuilder9\jdk1.4\jre\lib\rt.jar;C:\JBuilder9\jdk1.4\jre\lib\sunrsasign.jar;C:\JBuilder9\jdk1.4\jre\lib\ext\dnsns.jar;C:\JBuilder9\jdk1.4\jre\lib\ext\ldapsec.jar;C:\JBuilder9\jdk1.4\jre\lib\ext\localedata.jar;C:\JBuilder9\jdk1.4\jre\lib\ext\sunjce_provider.jar;C:\JBuilder9\jdk1.4\jre\lib\im\indicim.jar;C:\JBuilder9\jdk1.4\lib\dt.jar;C:\JBuilder9\jdk1.4\lib\htmlconverter.jar;C:\JBuilder9\jdk1.4\lib\tools.jar"  

    java.lang.NullPointerException
    at frame1.jButton3_actionPerformed(Frame1.java:249)
    at .Frame1_jButton3_actionAdapter.actionPerformed(Frame1.java:374)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1764)
    at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1817)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:419)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:257)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
    at java.awt.Component.processMouseEvent(Component.java:5134)
    at java.awt.Component.processEvent(Component.java:4931)
    at java.awt.Container.processEvent(Container.java:1566)
    at java.awt.Component.dispatchEventImpl(Component.java:3639)
    at java.awt.Container.dispatchEventImpl(Container.java:1623)
    at java.awt.Component.dispatchEvent(Component.java:3480)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3450)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3165)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3095)
    at java.awt.Container.dispatchEventImpl(Container.java:1609)
    at java.awt.Window.dispatchEventImpl(Window.java:1590)
    at java.awt.Component.dispatchEvent(Component.java:3480)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:450)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:197)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)
      

  2.   

    Socket socket1 = new Socket(jFormattedTextFieldIP.getText(), port);
    你这里是定义了一个局部变量,
    可能你还定义了一下成员变量socket1
      

  3.   

    那么我就把成员变量定义注释掉,
    但是如何在关闭按钮的方法中访问连接按钮方法中定义的局部变量socket1呢?谢谢!
      

  4.   

    try {
    Socket socket1 = new Socket(jFormattedTextFieldIP.getText(), port);    socket1 = new Socket(jFormattedTextFieldIP.getText(), port);
      }
      catch (IOException ex) {
      }
      

  5.   

    没打好:
    try {
    //Socket socket1 = new Socket(jFormattedTextFieldIP.getText(), port);变成    socket1 = new Socket(jFormattedTextFieldIP.getText(), port);
      }
      catch (IOException ex) {
      }