java基础 swing编程实战

时间:2023-03-08 19:57:08

1. 实现金山词霸,点击左右收缩

  效果图:

  java基础 swing编程实战

  exmaple code :

  

 /*
* 词霸
* */
package demo7;
import java.awt.*;
import java.awt.image.ImageObserver;
import java.awt.image.ImageProducer; import javax.swing.*;
public class example1 extends JFrame{ /**
* @param args
*/ //定义组件
JSplitPane jsp;
JList jlist;
JLabel jl1;
public static void main(String[] args) {
// TODO Auto-generated method stub
example1 exam = new example1();
}
public example1()
{
//创建组件
String []words = {"boy","girl","bird"};
jlist = new JList(words); jl1 = new JLabel(new ImageIcon("image/ciba.jpg"));
//拆分窗格
jsp =new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,jlist,jl1);
//可以变化
jsp.setOneTouchExpandable(true);
//设置布局管理器 //添加组件
this.add(jsp); //设置大小
this.setSize(400, 300);
this.setLocation(200, 200);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} }

2 . QQ聊天界面

  涉及到新的swing组件:

  1. JTextArea 多行文本框组件

  java基础 swing编程实战

  example code:

  

 /*
* QQ聊天
* */
package demo7;
import java.awt.*;
import javax.swing.*;
public class example2 extends JFrame{ /**
* @param args
*/
JTextArea jta = null;
JScrollPane jsp = null;
JPanel jp1=null;
JComboBox jcb = null;
JTextField jtf = null;
JButton jb = null;
public static void main(String[] args) {
// TODO Auto-generated method stub
example2 exam = new example2();
} //构造函数
public example2()
{
jta = new JTextArea();
jsp = new JScrollPane(jta);
jp1 = new JPanel();
String []chatter = {"布什","拉登"};
jcb = new JComboBox(chatter);
jtf = new JTextField(10);
jb =new JButton("发送"); //设置布局管理器 //添加组件
jp1.add(jcb);
jp1.add(jtf);
jp1.add(jb); //加入JFrame
this.add(jsp);
this.add(jp1,BorderLayout.SOUTH); //属性
this.setIconImage(new ImageIcon("image/qq.jpg").getImage());
this.setTitle("腾讯QQ");
this.setSize(300,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
} }

3 QQ登陆界面

  example code:

  

 /**
* 页签组件(JTabbedPane)选项卡窗格--使用QQ登录界面
*/
import java.awt.*;
import javax.swing.*;
public class example3 extends JFrame{
//设定组件
//主页面北部
JLabel jl1;//标签 //主页面南部
JButton jb1,jb2,jb3;//按钮
JPanel jp1;//面板 //主页面中部
JTabbedPane jtp;//选项卡窗格
JPanel jp2,jp3,jp4;//面板 JLabel jl2,jl3,jl4,jl5;//标签
JTextField jtf;//文本框
JPasswordField jpf;//密码框
JButton jb4;//按钮
JCheckBox jcb1,jcb2;//复选框 //JPanel2组件
JLabel jl6,jl7;//标签
JTextField jtf1;
JPasswordField jpf1; //JPanel3组件
JLabel jl8,jl9;//标签
JTextField jtf2;
JPasswordField jpf2; public static void main(String[] args) {
example3 win=new example3();
}
//构造函数
public example3(){
//创建组件
//创建JFrame北部JLabel1组件
jl1=new JLabel(new ImageIcon("images/qqdl.jpg")); //创建JFrame中部JPanel2组件
jl2=new JLabel("QQ号码",JLabel.CENTER);
jl3=new JLabel("QQ密码",JLabel.CENTER);
jl4=new JLabel("忘记密码",JLabel.CENTER);
jl4.setFont(new Font("宋体",Font.PLAIN,16));//设置字体,字号
jl4.setForeground(Color.BLUE);//设置字体颜色
jl5=new JLabel("<html><a href='www.qq.com'>申请密码保护</a></html>");
jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//鼠标移动到jl5后会变成手指图标 jtf=new JTextField();
jpf=new JPasswordField();
jb4=new JButton("清除号码");//JButton上可以放图片。new JButton(new ImageIcon("图片路径")); jcb1=new JCheckBox("隐身登录");
jcb2=new JCheckBox("记住密码"); jtp=new JTabbedPane();//选项卡窗格
jp2=new JPanel();
jp3=new JPanel();
//jp3.setBackground(Color.RED);//给面板设置背景色
jp4=new JPanel();
//jp4.setBackground(new Color(0,0,255)); //创建JFrame中部JTabbedPane选项卡JPanel3组件
jl6=new JLabel("手机号码",JLabel.CENTER);
jl7=new JLabel("密  码",JLabel.CENTER);
jtf1=new JTextField(20);
jpf1=new JPasswordField(20); //创建JFrame中部JTabbedPane选项卡JPanel4组件
jl8=new JLabel("电子邮箱",JLabel.CENTER);
jl9=new JLabel("密  码",JLabel.CENTER);
jtf2=new JTextField(20);
jpf2=new JPasswordField(20); //创建JFrame南部JPanel1组件
jp1=new JPanel();
jb1=new JButton("登 录");
jb2=new JButton("取 消");
jb3=new JButton("注册向导"); //设置布局管理器
jp2.setLayout(new GridLayout(3, 3));
//jp3.setLayout(new GridLayout(2, 2));
//jp4.setLayout(new GridLayout(2, 2)); //加入组件
//将组件添加到JPanel2中
jp2.add(jl2);//加入QQ号码标签
jp2.add(jtf);//加入文本框
jp2.add(jb4);//加入清除号码按扭 jp2.add(jl3);//加入QQ密码标签
jp2.add(jpf);//加入密码框
jp2.add(jl4);//加入忘记密码 jp2.add(jcb1);//加入隐身登陆复选框
jp2.add(jcb2);//加入记住密码复选框
jp2.add(jl5);//加入申请密码保护标签 //将组件添加到JPanel3中
jp3.add(jl6);
jp3.add(jtf1);
jp3.add(jl7);
jp3.add(jpf1); //将组件添加到JPanel4中
jp4.add(jl8);
jp4.add(jtf2);
jp4.add(jl9);
jp4.add(jpf2); //添加到JPanel1中
jp1.add(jb1);
jp1.add(jb2);
jp1.add(jb3); //将面板添加到选项卡窗格上
jtp.add("QQ号码",jp2);//第一个参数代表选项卡名称,第二个参数代表对应的面板
jtp.add("手机号码",jp3);
jtp.add("电子邮箱",jp4); //将JLabel1添加到Frame北部
this.add(jl1,BorderLayout.NORTH); //将JPanle2添加到Frame中部
this.add(jtp,BorderLayout.CENTER); //将JPanel1添加到Frame南部
this.add(jp1,BorderLayout.SOUTH); //窗体设置
this.setTitle("QQ登录界面");
//ImageIcon icon=new ImageIcon("图片路径");
//this.setIconImage(icon.getImage());
this.setIconImage((new ImageIcon("image/qqdl.jpg")).getImage());
this.setSize(350, 300);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setResizable(false);
}
}

4. 文本编辑器界面

  效果图:

  java基础 swing编程实战

  

  example code:

  

 package demo7;

 /**
* 1、菜单组件
JMenuBar 菜单条组件 树干
JMenu 菜单组件 树枝
JMenuItem 菜单项组件 树叶
2、二级菜单制作
JMenu里面可以嵌套JMenu
3、工具条组件
JToolBar 容器类组件
*/
import java.awt.*;
import java.awt.event.InputEvent;
import java.awt.event.InputMethodEvent;
import java.awt.event.KeyEvent;
import javax.swing.*;
public class Window012 extends JFrame{
//文件组定义组件
JMenuBar jmb;//菜单条组件
JMenu menu1,menu2,menu3,menu4,menu5;//主菜单:文件、编辑、格式、查看、帮助
JMenuItem item2,item3,item4,item5,item6,item7;//子菜单:新建、打开、保存、另存为、页面设置、打印、退出
JMenu xinjian;//二级菜单
JMenuItem file,project; //编辑组定义组件
//编辑:撤消、剪切、复制、粘贴、删除、查找、查找下一个、替换、转到、全选、时间/日期
JMenuItem eitem1,eitem2,eitem3,eitem4,eitem5,eitem6,eitem7,eitem8,eitem9,eitem10,eitem11; //格式组定义组件
JMenuItem oitem1,oitem2;//格式:自动换行、字体 //查看组定义组件
JMenuItem vitem1;//查看:状态栏 //帮助组定义组件
JMenuItem hitem1,hitem2;//帮助:查看帮助、关于记事本 JTextArea jta;
//工具条
JToolBar jtb;
JButton jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8; public static void main(String[] args) {
Window012 win=new Window012();
}
//构造函数
public Window012(){
//构建组件
//工具条
jtb=new JToolBar();
jb1=new JButton(new ImageIcon("image/new.jpg"));
jb1.setToolTipText("新建");//设置提示信息
jb2=new JButton(new ImageIcon("image/open.jpg"));
jb2.setToolTipText("打开");
jb3=new JButton(new ImageIcon("image/save.jpg"));
jb3.setToolTipText("保存");
jb4=new JButton(new ImageIcon("image/copy.jpg"));
jb4.setToolTipText("复制");
jb5=new JButton(new ImageIcon("image/delete.jpg"));
jb5.setToolTipText("删除");
jb6=new JButton(new ImageIcon("image/modify.jpg"));
jb6.setToolTipText("编辑");
jb7=new JButton(new ImageIcon("image/print.jpg"));
jb7.setToolTipText("打印");
jb8=new JButton(new ImageIcon("image/close.jpg"));
jb8.setToolTipText("关闭"); jmb=new JMenuBar();
//主菜单
menu1=new JMenu("文件(F)");
menu1.setMnemonic('F');//设置助记符
menu2=new JMenu("编辑(E)");
menu2.setMnemonic('E');
menu3=new JMenu("格式(O)");
menu3.setMnemonic('O');
menu4=new JMenu("查看(V)");
menu4.setMnemonic('V');
menu5=new JMenu("帮助(H)");
menu5.setMnemonic('H'); //文件--新建--子目录
xinjian=new JMenu("新建");
file=new JMenuItem("文件");
project=new JMenuItem("工程"); item2=new JMenuItem("打开(O)");
item2.setMnemonic('O');
item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));//设置ctrl快捷组合键
item3=new JMenuItem("保存(S)");
item3.setMnemonic('S');
item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
item4=new JMenuItem("另存为(A)");
item4.setMnemonic('A');
item5=new JMenuItem("页面设置(U)");
item5.setMnemonic('U');
item6=new JMenuItem("打印(P)");
item6.setMnemonic('P');
item6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
item7=new JMenuItem("退出(X)");
item7.setMnemonic('X'); eitem1=new JMenuItem("撤消(U)");
eitem1.setMnemonic('U');
eitem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK));
eitem2=new JMenuItem("剪切(T)");
eitem2.setMnemonic('T');
eitem2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_MASK));
eitem3=new JMenuItem("复制(C)");
eitem3.setMnemonic('C');
eitem3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
eitem4=new JMenuItem("粘贴(P)");
eitem4.setMnemonic('P');
eitem4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
eitem5=new JMenuItem("删除(L)");
eitem5.setMnemonic('L');
eitem5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
eitem6=new JMenuItem("查找(F)");
eitem6.setMnemonic('F');
eitem6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
eitem7=new JMenuItem("查找下一个(N)");
eitem7.setMnemonic('N');
eitem7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));
eitem8=new JMenuItem("替换(R)");
eitem8.setMnemonic('R');
eitem8.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_MASK));
eitem9=new JMenuItem("转到(G)");
eitem9.setMnemonic('G');
eitem9.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,InputEvent.CTRL_MASK));
eitem10=new JMenuItem("全选(A)");
eitem10.setMnemonic('A');
eitem10.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
eitem11=new JMenuItem("时间/日期(D)");
eitem11.setMnemonic('D');
eitem11.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0)); oitem1=new JMenuItem("自动换行(W)");
oitem1.setMnemonic('W');
oitem2=new JMenuItem("字体(F)");
oitem2.setMnemonic('F'); vitem1=new JMenuItem("状态栏(S)");
vitem1.setMnemonic('S'); hitem1=new JMenuItem("查看帮助(H)");
hitem1.setMnemonic('H');
hitem2=new JMenuItem("关于记事本(A)");
hitem2.setMnemonic('A'); jta=new JTextArea(); //设定布局管理器 //加入组件
//将按钮添加到工具条上
jtb.add(jb1);
jtb.add(jb2);
jtb.add(jb3);
jtb.add(jb4);
jtb.add(jb5);
jtb.add(jb6);
jtb.add(jb7);
jtb.add(jb8); //将菜单项添加到菜单上
xinjian.add(file);
xinjian.add(project); menu1.add(xinjian);
menu1.add(item2);
menu1.add(item3);
menu1.add(item4);
menu1.addSeparator();//添加分割线
menu1.add(item5);
menu1.add(item6);
menu1.addSeparator();
menu1.add(item7); menu2.add(eitem1);
menu2.addSeparator();
menu2.add(eitem2);
menu2.add(eitem3);
menu2.add(eitem4);
menu2.add(eitem5);
menu2.addSeparator();
menu2.add(eitem6);
menu2.add(eitem7);
menu2.add(eitem8);
menu2.add(eitem9);
menu2.addSeparator();
menu2.add(eitem10);
menu2.add(eitem11); menu3.add(oitem1);
menu3.add(oitem2); menu4.add(vitem1); menu5.add(hitem1);
menu5.addSeparator();
menu5.add(hitem2); //将菜单添加到菜单条上
jmb.add(menu1);
jmb.add(menu2);
jmb.add(menu3);
jmb.add(menu4);
jmb.add(menu5); //将菜单条添加到窗体上
this.setJMenuBar(jmb); //将工具条添加到窗体上
this.add(jtb,BorderLayout.NORTH); JScrollPane jsp=new JScrollPane(jta);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
this.add(jsp); //窗体设置
this.setTitle("Java记事本");
this.setSize(500, 400);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}