首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

求高手点拨一个Swing开发中的小疑点

2014-01-01 
求高手点拨一个Swing开发中的小问题.大侠,您好:我写了一个Java的聊天工具的界面,代码如下:package Client

求高手点拨一个Swing开发中的小问题.
大侠,您好:
       我写了一个Java的聊天工具的界面,代码如下:
       

package Client;

import java.awt.Dialog;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.InetAddress;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;


//创建ChatClient类作为聊天窗口;
public class Complete_ChatForeUIDoctorClient extends JFrame implements WindowListener,KeyListener,ItemListener, ActionListener
{
private static final long serialVersionUID = 1L;
static Integer ChatPartnerSerialMark = 200;
Integer ChatFriNum = 200;
static DataOutputStream dops3 = null;
JPanel jp = new JPanel(); 
static DataInputStream dips3 = null;
boolean started = false;
InetAddress addr = null;
String title = "获取好友资料";
String chatword = null;
Dialog ordernum = new Dialog(this,title,started);
    String str;
    int T =0;
    public static String UIDLocal = null;
    static String roleLocal = null;
    static String iPAddressLocal = null;
    String Local_Doctor_facia = null;
    Integer MyLocalSysNum = -1;
    static String MyChatObjrolE = null;
    JPanel jp1 = new JPanel();
    JTextArea Jta2 = new JTextArea();
String DoctorFuct = null;
JTextArea Jta1 = new JTextArea();
OutputStream outputstream = null;

//CaptureScreen capScreen = new CaptureScreen(); 
public Complete_ChatForeUIDoctorClient(String UID,Integer MySysPriNum,String Doctor_facia,Integer ChatObjectNum,String ChatObjrolE,String MyIP){
System.out.println("C端Complete_ChatForeUIDoctorClient");
UIDLocal = UID;
MyLocalSysNum = MySysPriNum;
roleLocal = "Doctor";
str = Doctor_facia;
this.setTitle(str);
ChatPartnerSerialMark = ChatObjectNum;
MyChatObjrolE = ChatObjrolE;
iPAddressLocal = MyIP;
//TODO:
Jta2.addKeyListener(this);
                 Jta1.setLineWrap(true); //如果加上这一句,那么水平方向的滚动条永远不会出现。
 Jta1.setEditable(false); 
 JScrollPane jspanel=new JScrollPane(Jta1); 
 jspanel.add(Jta1); 
 this.add(jspanel);
 setSize(300, 300);
 setVisible(true);
 setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void start() {
JScrollPane panel = new JScrollPane(Jta1);
panel.setPreferredSize (new Dimension (600,400));
this.setBounds(new Rectangle(419,92,590,550));
jp1.setLayout(null);
Jta1.setBounds(new Rectangle(28,10,500,220));
Jta1.setLineWrap(true);//激活自动换行功能
Jta2.setLineWrap(true);
Jta1.setWrapStyleWord(true);//激活断行不断字功能

Jta2.setBounds(new Rectangle(28,280,500,220));
   panel.setVisible(true);
jp1.add(Jta2);
jp1.add(Jta1);
jp1.add(panel);
this.add(jp1);
this.setVisible(true);
}

@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}

@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}

@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
}

@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}

@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
public static void main(String[] args){
new Complete_ChatForeUIDoctorClient("测试账户0",0,"加油!!加油!!",2,"Doctor","222.196.1.8").start();

}

@Override
public void windowOpened(WindowEvent e)
{
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}

@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
    if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER){


String Chatword = Jta2.getText().trim();
Jta1.setText(Chatword+"\r\n");
Jta1.select(1022, 2044);
Jta2.setText("");
    }

}

@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}

@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}

@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
}

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

}


    这里的运行效果,是如下的界面:
    求高手点拨一个Swing开发中的小疑点
    希望高手能够解答我的问题:
    1.为什么我的代码运行之后的效果,在左上角的红色方框,有一个“白色的色块”,好像是一个JLabel标签?
    但是我还没有进行这个组件的定义,为什么会在我的JTextArea的实例Jta1的左上角,有上面的运行效果的一个“JLabel标签”呢...?
    
[解决办法]
红框里可不是JLabel,这实际上就是你的Jta1。

new Complete_ChatForeUIDoctorClient("测试账户0",0,"加油!!加油!!",2,"Doctor","222.196.1.8").start();

这一句,实际上会执行构造函数和start()两步

构造函数中,有一句“this.add(jspanel);”,这个实际上就是你的Jta1

start()中有一句“this.add(jp1);”,这个是你窗口底下有两个大白框的jp1


[解决办法]
给你挑点毛病吧,希望对你的代码质量能有帮助。
public class Complete_ChatForeUIDoctorClient extends JFrame implements WindowListener,KeyListener,ItemListener, ActionListener
{
private static final long serialVersionUID = 1L;
static Integer ChatPartnerSerialMark = 200;
Integer ChatFriNum = 200;

0. { 应该在 ActionListener的后面,不是单独在新的一行。
1. 函数名在Complete和Chat之间不应该用下划线。
2. ChatPartnerSerialMark: 成员变量名首字母应该小写。
3. 用绝对坐标来定位组件不是个好主意,至少在你的例子里不好,应该用Layout来布局。

[解决办法]
楼上正解,赞个 
[解决办法]
1楼的是正解

热点排行