当前位置:编程学习 > JAVA >>

请教一个Java代码的“预期与实现结果不符”的原因问题....

高手,您好:
    这是我写的一个“Java im聊天工具的登陆注册窗口”源代码,源代码如下:
    
package c_port_packageTeacher;

import java.awt.Rectangle;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class Login extends JFrame{

/**
 * 
 */
private static final long serialVersionUID = 1L;
/**
 * @param args
 */
JTextField jtf0 = new JTextField();
JTextField jtf1 = new JTextField();
JLabel jl0 = new JLabel();
JLabel jl1 = new JLabel();
MyJButtonLogin jb1 = new MyJButtonLogin("登陆",jtf0.getText(),jtf1.getText(),this);
MyJButton jb2 = new MyJButton("注册","127.0.0.1");
MyJButtonPayForSysProduct jb3 = new MyJButtonPayForSysProduct("买产品");
JPasswordField jpwf = new JPasswordField();       
JPanel jp1 = new JPanel();
public static String UID = null;
static String PWD = null;

public static void main(String[] args) {
// TODO Auto-generated method stub
new Login();
}

public Login(){
this.setTitle("赤兔马网络答疑学校,让您的孩子,从杜月笙成为段永平");
this.setSize(500,600);
this.setVisible(true);
this.setDefaultCloseOperation(Login.EXIT_ON_CLOSE);
jb1.setBounds(new Rectangle(30,220,80,30));
jb2.setBounds(new Rectangle(236,220,80,30));
jb3.setBounds(new Rectangle(128,220,90,30));
jp1.setLayout(null);
jp1.add(jb1);
jp1.add(jb2);
jtf0.setBounds(new Rectangle(73,115,220,25));
jp1.add(jtf0);
jpwf.setBounds(new Rectangle(73,150,220,25));
jp1.add(jpwf) ;
jl0 = new JLabel("用户名");
jl1 = new JLabel("密码");
jl0.setBounds(new Rectangle(30,115,40,25));
jl1.setBounds(new Rectangle(30,150,40,25));
jp1.add(jl0);
jp1.add(jl1);
jp1.add(jb3);
this.add(jp1);
this.setBounds(283,115,370,330);
this.setContentPane(jp1);
UID = jtf0.getText();
PWD = jtf1.getText();
}
}

 
    上面的代码中的第25行的MyJButtonPayForSysProduct类的代码如下:
    
package c_port_packageTeacher;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

import javax.swing.JButton;

public class MyJButtonPayForSysProduct extends JButton{
/**
 * 
 */
private static final long serialVersionUID = 1L;
Socket s;
public MyJButtonPayForSysProduct(String name){
super(name);
try {
s = new Socket(Recv.D_PORT_SERVER,9999);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
new PayforTheSoftWareOfDevelopmenter(s);
this.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new PayforTheSoftWareOfDevelopmenter(s);
}

});
}
}

    上面的这个JButton类的弟我重写的子类的第34行代码中的PayforTheSoftWareOfDevelopmenter类的源代码如下:
    
package c_port_packageDoctor;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class PayforTheSoftWareOfDevelopmenter extends JFrame implements ActionListener{
/**
 * 
 */
private static final long serialVersionUID = 1L;
Socket so1 = null;
JPanel jp = new JPanel();
JButton jb0 = new JButton("提交本客户端开发商产品注册码");
JTextField jtf = new JTextField();
static JLabel jL = new JLabel("<html>请输入您9位系统服务授权验证码<br>获得系统的在线优秀教师的服务和本系统的产品授权,购买地址:您所在的银川新二中财务处购买</html>");
DataOutputStream dops = null;
Integer MyMemNum = -1;
String MyMemNumStr = null;

public PayforTheSoftWareOfDevelopmenter(Socket s1){
so1 = s1;
this.setBounds(283,115,370,330);
Font fnt = new Font("华文中宋",0,18);
jb0.setFont(fnt);
jL.setFont(fnt);
this.setTitle("请输入授权码获得产品使用权");
jb0.setEnabled(false);
jtf.addKeyListener(new KeyAdapter(){
    public void keyTyped(KeyEvent evt) {

     String content = jtf.getText();
        int typenum = content.length();
        if(typenum==9){
         jb0.setEnabled(true);
        }}
       });
jp.setLayout(new BorderLayout());
jp.add(jL,BorderLayout.NORTH);
jp.add(jb0,BorderLayout.CENTER);
jp.add(jtf,BorderLayout.SOUTH);
jp.setBounds(new Rectangle(400,300,400,300));
this.add(jp);
this.setVisible(true);
}

public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String MyPersonality = jtf.getText();
try {
dops = new DataOutputStream(so1.getOutputStream());
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
MyMemNumStr = String.valueOf(Recv.MySystemserialnum);
int length = MyMemNumStr.length();
if(length==1){
MyMemNumStr = "00"+MyMemNumStr;
}
if(length==2){
MyMemNumStr = "0"+MyMemNumStr;
}
int len = MyPersonality.length();
if(len == 9){
jb0.setEnabled(true);
try {
dops.writeUTF("11##"+MyMemNumStr+"%%"+MyPersonality);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}


}

    上面的3个类文件运行的效果是:
    “点击了主类文件”:Login类,窗口中的“运行按钮”之后,产生的结果为:
    
    用鼠标移开上面的窗口之后,得到了下面的这个我没有写到Login类中运行的“PayforTheSoftWareOfDevelopmenter”,类的并行运行界面...:
    
    这里出现的问题是:
    我的“Login类”在经过了运行,这个步骤之后,打开了原本需要点击“买产品”这个“Login类中第25行”的PayforTheSoftWareOfDevelopmenter类的代码,却“也被运行”了..
    希望得到高手的点拨:
    问题出在什么地方...?
    在线等待高手的相助!!
    一百分奉上!!
                                                                     一位求知者
                                                                    2013年9月25日下午19点50分 java java代码调试 im聊天 Socket编程 --------------------编程问答-------------------- 哇,还购买。。。 --------------------编程问答-------------------- healer_kx,这个产品是“毕设答辩”用的版本...
    弟我就是想学习一下技术,暂时还不到“运营”的阶段...
    希望CSDN中的高手,能够尽快点拨我的问题的答案... --------------------编程问答-------------------- MyJButtonLogin jb1 = new MyJButtonLogin("登陆",jtf0.getText(),jtf1.getText(),this);
    MyJButton jb2 = new MyJButton("注册","127.0.0.1");
    MyJButtonPayForSysProduct jb3 = new MyJButtonPayForSysProduct("买产品");
这里在执行main方法前会先初始化,调用MyJButtonPayForSysProduct(name)这个构造器。

MyJButtonPayForSysProduct类的28行调用PayforTheSoftWareOfDevelopmenter类,这个类里也会进行初始化操作,加载静态变量:
static JLabel jL = new JLabel("<html>请输入您9位系统服务授权验证码<br>获得系统的在线优秀教师的服务和本系统的产品授权,购买地址:您所在的银川新二中财务处购买</html>");
这里你是静态变量。 --------------------编程问答-------------------- 毕设为什么不用B/S去做呢?。。 --------------------编程问答-------------------- 不明觉厉,MyJButtonPayForSysProduct类的28行写的就是调用PayforTheSoftWareOfDevelopmenter类,不知道你是想让它运行呢还是不运行呢? --------------------编程问答--------------------
引用 4 楼 fudongrifdr 的回复:
毕设为什么不用B/S去做呢?。。
同意,B/S不是更好做么。。。。还要用swing --------------------编程问答-------------------- 首先CS结构具有:“能够更加牢固地绑住用户”的效果,其次,CS结构,具有“能够让用户的隐私数据”“不会轻易被监听”的效果,并且,CS结构,还能够进行“一定程度的C端用户的逻辑”的“开发者自己的意志更自由的发挥”.
CS结构,W岁!! --------------------编程问答-------------------- 不要逆天而行了。。。JAVA少年喊CS结构W岁。。。 --------------------编程问答-------------------- “能够更加牢固地绑住用户”是个神马概念。。
CS结构,具有“能够让用户的隐私数据”“不会轻易被监听”的效果。。又是个神马概念。。。 --------------------编程问答-------------------- CS结构的程序,不会让用户:“看到一个促销概念后”“说转到别的平台就转到别的平台”,因为自己的电脑中,是“首先想到自己的客户端”的..
    就像QQ平台一样. 
    并且CS结构的程序,由于他能够进行“通信过程的信令加密”,所以他能够让用户的通信数据,“比较难以被破解”.
    在“居民楼盘”“这样的因特网通信结构”的背景之下。能够更加保护用户的通信隐私安全.
    希元首,我就是“一位日日夜夜向着理想奔跑的筑梦者”,那个哥们儿.
    希望能够得到您的QQ号码...
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,