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

请教一个抓洼代码问题 2013-09-25 07:58:53
高手,您好:
这是我写的一个“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分
...全文
339 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
江城DiorsMan 2013-09-26
  • 打赏
  • 举报
回复
引用 4 楼 fudongrifdr 的回复:
毕设为什么不用B/S去做呢?。。
同意,B/S不是更好做么。。。。还要用swing
失忆的鱼 2013-09-26
  • 打赏
  • 举报
回复
不明觉厉,MyJButtonPayForSysProduct类的28行写的就是调用PayforTheSoftWareOfDevelopmenter类,不知道你是想让它运行呢还是不运行呢?
末日哥 2013-09-26
  • 打赏
  • 举报
回复
毕设为什么不用B/S去做呢?。。
踩踩一哥 2013-09-26
  • 打赏
  • 举报
回复
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>"); 这里你是静态变量。
末日哥 2013-09-26
  • 打赏
  • 举报
回复
“能够更加牢固地绑住用户”是个神马概念。。 CS结构,具有“能够让用户的隐私数据”“不会轻易被监听”的效果。。又是个神马概念。。。
末日哥 2013-09-26
  • 打赏
  • 举报
回复
不要逆天而行了。。。JAVA少年喊CS结构W岁。。。
  • 打赏
  • 举报
回复
首先CS结构具有:“能够更加牢固地绑住用户”的效果,其次,CS结构,具有“能够让用户的隐私数据”“不会轻易被监听”的效果,并且,CS结构,还能够进行“一定程度的C端用户的逻辑”的“开发者自己的意志更自由的发挥”. CS结构,W岁!!
  • 打赏
  • 举报
回复
healer_kx,这个产品是“毕设答辩”用的版本... 弟我就是想学习一下技术,暂时还不到“运营”的阶段... 希望CSDN中的高手,能够尽快点拨我的问题的答案...
healer_kx 2013-09-25
  • 打赏
  • 举报
回复
哇,还购买。。。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧