1、swing的界面可以直接用netbeans画出来嘛。
创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于网站设计、成都做网站、禄丰网络推广、成都小程序开发、禄丰网络营销、禄丰企业策划、禄丰品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供禄丰建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
2、可以把输出的聊天内容都放在一个StringBuffer里,每打出一句话,就把这句话追加在StringBuffer,然后把StringBuffer里的内容输出到Textarea中。
3、好友列表可以用JList
java实现简单QQ登陆界面:
1.生成界面的java代码
package QQ2014;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class QQ2014 {
//创建登陆界面类
public void showLoginFrame(){
//创建船体对象
JFrame loginFrame=new JFrame();
//设置大小,位置,标题
loginFrame.setSize(300,200);
loginFrame.setTitle("QQ2014");
loginFrame.setLocationRelativeTo(null);
//创建流式分布对象
FlowLayout layout=new FlowLayout();
loginFrame.setLayout(layout);
//创建账户名,密码和输入框
JLabel user_name=new JLabel("账号:");
JLabel user_password=new JLabel("密码:");
JTextField field_name=new JTextField(20);
JPasswordField field_password=new JPasswordField(20);
//创建登陆,重置按钮
JButton button_reset=new JButton("重置");
JButton button_login=new JButton("登陆");
//设置窗体可见
loginFrame.setVisible(true);
//创建事件监听对象
ActionListener action_listener1=new ActionListener(){
public void actionPerformed(ActionEvent e){
String name=field_name.getText();
String password=field_password.getText();
if("zhaoxin".equals(name)"123".equals(password))
{
showIndexFrame();
loginFrame.setDefaultCloseOperation(3);
loginFrame.setVisible(false);
}
else{
System.out.println("密码错误,重新输入!");
}
}
};
ActionListener action_listener2=new ActionListener(){
public void actionPerformed(ActionEvent e){
field_name.setText("");
field_password.setText("");
}
};
//将文本输入框,按钮,事件监听对象添加
loginFrame.add(user_name);
loginFrame.add(field_name);
loginFrame.add(user_password);
loginFrame.add(field_password);
loginFrame.add(button_reset);
loginFrame.add(button_login);
button_reset.addActionListener(action_listener2);
button_login.addActionListener(action_listener1);
}
public void showIndexFrame(){
//创建窗体对象
JFrame indexFrame=new JFrame();
indexFrame.setSize(200,500);
indexFrame.setTitle("QQ好友列表");
indexFrame.setLocationRelativeTo(null);
//设置流式分布对象
FlowLayout layout=new FlowLayout(FlowLayout.CENTER,100,10);
indexFrame.setLayout(layout);
//创建好友按钮
for(int i=0;i10;i++)
{
JButton button_friend=new JButton("friend"+i);
//创建动作事件监听对象
ActionListener action_listener=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
showChatFrame();
indexFrame.setVisible(false);
indexFrame.setDefaultCloseOperation(3);
}
};
button_friend.addActionListener(action_listener);
indexFrame.add(button_friend);
}
//设置窗体可见
indexFrame.setVisible(true);
}
public void showChatFrame(){
//创建窗体,大小,位置,标题
JFrame chatFrame=new JFrame();
chatFrame.setSize(400,400);
chatFrame.setTitle("正在聊天中...");
chatFrame.setLocationRelativeTo(null);
//创建聊天记录,输入域
JTextArea area_input=new JTextArea(10,30);
JTextArea area_record=new JTextArea(5,30);
//创建流式分布对象
FlowLayout layout=new FlowLayout(FlowLayout.CENTER,0,10);
chatFrame.setLayout(layout);
//创建发送,关闭按扭
JButton button_send=new JButton("发送");
JButton button_close=new JButton("关闭");
//创建动作事件监听对象
ActionListener action_listener1=new ActionListener()
{
public void actionPerformed(ActionEvent e){
area_record.setText(area_record.getText()+"\n"+area_input.getText());
area_input.setText("");
}
};
ActionListener action_listener2=new ActionListener()
{
public void actionPerformed(ActionEvent e){
chatFrame.setVisible(false);
chatFrame.setDefaultCloseOperation(3);
}
};
//设置窗体可见
chatFrame.setVisible(true);
//添加按钮,事件监听对象
chatFrame.add(area_record);
chatFrame.add(area_input);
chatFrame.add(button_send);
chatFrame.add(button_close);
button_send.addActionListener(action_listener1);
button_close.addActionListener(action_listener2);
}
}
复制代码
2.java main方法调用
package QQ2014;
public class Test {
public static void main(String[] args){
QQ2014 qq=new QQ2014();
qq.showLoginFrame();
}
}
来自博客 小梁123 的分享
爱应用团队为你解答
网络资料
package cn.myself.myproject.FrameProject;import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;import cn.myself.myproject.employeepj.view.common.CenterWindow;
/**
* 程序功能:QQ登陆面板
* 学习内容:GridBagLayout布局方式的学习
* 以GridBagLayout方式布局的容器,其容器中的每个组件必须由一个GridBagConstrains类的实例对象进行大小,位置等约束。
* @author huliu 2009-06-26
* 难题:a.帐号后面是什么框?
* b.图片的相对路径怎么设置?
*/
public class QQRegistBoard extends JFrame{
JPanel p1;
GridBagLayout gb1;
GridBagConstraints gbc1;
JButton btn1,btn2;
JLabel label0,label1,label2,label3,label4,label5;
JTextField text1,text2;
JComboBox box1,box2;
JCheckBox check1,check2;
JList list1;
/**
* 构造方法
*/
public QQRegistBoard(){
super("2009正式版(huliu)");
p1=new JPanel();
gb1=new GridBagLayout();
gbc1=new GridBagConstraints();
p1.setLayout(gb1);//GridBagLayout布局。网袋布局
getContentPane().add(p1); //取得当前容器对象
this.setSize(350,250);
CenterWindow.centerW(this);
Icon icon1 = new ImageIcon("./QQ2.jpg");
// Icon icon1 = new ImageIcon("./QQ.jpg"); //加载图片,当前目录下的QQ.jpg
// Icon icon1 = new ImageIcon("src/cn/mysef/images/QQ1.jpg");
label0=new JLabel(icon1);
label1=new JLabel("帐号:");
label2=new JLabel("注册新帐号");
label3=new JLabel("密码:");
label4=new JLabel("取回密码");
label5=new JLabel("状态:");
text1=new JTextField(10);
text2=new JTextField(10);
String[] str1={"313558851","313857401","690442763"};
box1=new JComboBox(str1);
box1.setEditable(true);//设置ComboBox字段值是否为可编辑
box2=new JComboBox();
check1=new JCheckBox("记住密码",true);
check2=new JCheckBox("自动登录");
btn1=new JButton("设置");
btn2=new JButton("登录");
p1.add(label0,GBC(0,0,3,1,new Insets(5,2,2,4)));//图片
p1.add(label1,GBC(1,0,1,1,new Insets(4,2,2,4)));
p1.add(box1, GBC(1,1,1,1,new Insets(4,2,2,0)));
//p1.add(text2,GBC(1,1,1,1));
p1.add(label2,GBC(1,2,1,1,new Insets(4,2,2,3)));
p1.add(label3,GBC(2,0,1,1,new Insets(4,2,2,3)));
p1.add(text1, GBC(2,1,1,1,new Insets(5,2,2,3)));
p1.add(label4,GBC(2,2,1,1,new Insets(4,2,2,3)));
p1.add(label5,GBC(3,0,1,1,new Insets(4,2,2,3)));
p1.add(check1,GBC(3,1,1,1,new Insets(4,2,2,3)));
p1.add(check2,GBC(3,2,1,1,new Insets(4,2,2,3)));
p1.add(btn1 ,GBC(4,0,1,1,new Insets(4,2,2,3)));
p1.add(btn2 ,GBC(4,2,1,1,new Insets(4,2,2,3)));
}
/**
* GBC方法:功能是设计以GridBagLayout方式布局的容器(如Panel容器对象)内的组件的位置,大小等约束的。
* @param gridy
* @param gridx
* @param gridwidth
* @param gridheight
* @return GridBagStraints实对象
* Insets(int top, int left, int bottom, int right),与其它组件之间距离(上,左,下,右)
*/
public GridBagConstraints GBC(int gridy,int gridx,int gridwidth,int gridheight,Insets insets){
GridBagConstraints gbc1=new GridBagConstraints();
gbc1.gridx=gridx; //列
gbc1.gridy=gridy; //行
gbc1.gridwidth=gridwidth;//宽度
gbc1.gridheight=gridheight; //高度
//insets=new Insets(1,1,1,1);
gbc1.insets=insets;
return gbc1;
}
public static void main(String[] args){
new QQRegistBoard().setVisible(true);
}}
望采纳
import java.io.*;
public class QQ_Manager {
private int max_user=1000;
private String[] userID;
private String[] userName;
private String[] userPW;
private String[] userIP;
private int userCounts;
private int userOnline;
private String fileName;
/**构造方法初始化数据文件等*/
QQ_Manager(String fileName){this.fileName=fileName;}
/**将现有的QQ用户和记录写入数据文件*/
public synchronized void write_userDataFile(String fileName) {
}
/**从数据文件中读取QQ用户记录*/
public synchronized void read_userDataFile(String fileName) {
}
/**用户来注册新的QQ号*/
public synchronized boolean regist_QQ(String userName,String PW){return false;}
/**QQ用户登陆处理*/
public synchronized boolean login_QQ(String id,String pw){return true;}
/**QQ用户离线处理*/
public synchronized boolean logout_QQ(String id, String pw){return false;}
/**返回QQ在线列表*/
public String get_QQList(){return null;}
}
package ch10;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//定义该类继承自JFrame,实现ActionListener接口
public class LoginTest extends JFrame implements ActionListener
{
//创建JPanel对象
private JPanel jp=new JPanel();
//创建3个标并加入数组
JLabel name = new JLabel("请输入用户名");
JLabel password = new JLabel("请输入密码");
JLabel show = new JLabel("");
private JLabel[] jl={name,password,show};
//创建登陆和重置按扭并加入数组
JButton login = new JButton("登陆");
JButton reset = new JButton("重置");
private JButton[] jb={login,reset};
//创建文本框以及密码框
private JTextField jName=new JTextField();
private JPasswordField jPassword =new JPasswordField();
public LoginTest()
{
//设置布局管理器为空布局,这里自己摆放按钮、标签和文本框
jp.setLayout(null);
for(int i=0;i2;i++)
{
//设置标签和按扭的位置与大小
jl[i].setBounds(30,20+40*i,180,20);
jb[i].setBounds(30+110*i,100,80,20);
//添加标签和按扭到JPanel容器中
jp.add(jl[i]);
jp.add(jb[i]);
//为2个按钮注册动作事件监听器
jb[i].addActionListener(this);
}
//设置文本框的位置和大小,注意满足美观并足够用户名的长度
jName.setBounds(130,15,100,20);
//添加文本框到JPanel容器中
jp.add(jName);
//为文本框注册动作事件监听器
jName.addActionListener(this);
//设置密码框的位置和大小,注意满足美观和足够密码的长度
jPassword.setBounds(130,60,100,20);
//添加密码框到JPanel容器中
jp.add(jPassword);
//设置密码框中的回显字符,这里设置美元符号
jPassword.setEchoChar('$');
//为密码框注册动作事件监听器
jPassword.addActionListener(this);
//设置用于显示登陆状态的标签大小位置,并将其添加进JPanel容器
jl[2].setBounds(10,180,270,20);
jp.add(jl[2]);
//添加JPanel容器到窗体中
this.add(jp);
//设置窗体的标题、位置、大小、可见性及关闭动作
this.setTitle("登陆窗口");
this.setBounds(200,200,270,250);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//实现动作监听器接口中的方法actionPerformed
public void actionPerformed(ActionEvent e)
{
//如果事件源为文本框
if(e.getSource()==jName)
{
//切换输入焦点到密码框
jPassword.requestFocus();
}
//如果事件源为重置按扭
else if(e.getSource()==jb[1])
{
//清空姓名文本框、密码框和show标签中的所有信息
jl[2].setText("");
jName.setText("");
jPassword.setText("");
//让输入焦点回到文本框
jName.requestFocus();
}
//如果事件源为登陆按钮,则判断登录名和密码是否正确
else
{
//判断用户名和密码是否匹配
if(jName.getText().equals("lixiangguo")
String.valueOf(jPassword.getPassword()).equals("19801001"))
{
jl[2].setText("登陆成功,欢迎您的到来!");
}
else
{
jl[2].setText("对不起,您的用户名或密码错误!");
}
}
}
public static void main(String[] args)
{
//创建LoginTest窗体对象
new LoginTest();
}
}
这个简单点的
是javeSE。主要用来编写一些界面程序,带窗口的。
ME是专门用来手机开发的。不过前途不咋滴了。
EE是用来进行企业级开发的。多少是BS编程,就是网站类程序。
这3个的基本的java基础类都是一样 的。
区别是:
SE含有SWing等界面类。
ME有很多对手机硬件操作的类。
EE有很多WEB开发的类。
希望对你有所帮助!o(∩_∩)o 哈哈