java基础 swing编程实战
1. 实现金山词霸,点击左右收缩
效果图:
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 多行文本框组件
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. 文本编辑器界面
效果图:
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);
- }
- }
java基础 swing编程实战的更多相关文章
- java基础-网络编程(Socket)技术选型入门之NIO技术
java基础-网络编程(Socket)技术选型入门之NIO技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传统的网络编程 1>.编写socket通信的MyServer ...
- Java基础——GUI编程(四)
继前面的,这篇主要记录菜单和文件对话框的两个小练习,来熟悉一下方法的应用,一些简单的逻辑和Swing的相关简介,以及关于GUI基础的记录. 一.创建一个菜单 import java.awt.FlowL ...
- java中Swing编程再度练习篇
总结: 注意理解frame的层级关系 package com.da; //添加背景图片 //我只实现了插入图片.但并没有实现是背景图片 import javax.swing.JFrame; impor ...
- 二十三、Java基础--------网络编程
Java中另一个重要技术就是网络编程了,为了更好的学习web方向的知识,有必要对java之网络编程好好学习,本文将围绕网络编程技术进行分析. 常见的网络协议:UDP.TCP UDP 1. 将数据源和目 ...
- Java基础——网络编程(二)
一.套接字 Socket 网络驱动程序提供给应用程序编程的接口和一种机制,可以比喻成一个港口码头 应用程序只要把货放在这,就算完成了货物的运送.它在应用程序中创建,通过一种绑定机制与驱动程序建立关系, ...
- java基础—GUI编程(一)
一.AWT介绍
- Java基础——网络编程(一)
本文主要记录网络编程的一些基础知识,学了前班部分,对专业术语有些蒙,但是,收货也是很多很多的.观察了自己计算机的进程,查找其他网络地址的IP,对互联网的层次关系有了更深一步的了解.下面多是概念的摘录, ...
- Java基础——GUI编程(一)
一.定义 GUI全称是Graphical User Interface,即图形用户界面.JDK中提供了AWT 和 Swing 两个包,用于GUI程序的设计和开发. 1.java .awt abstr ...
- Java基础——网络编程
一.网络编程概述 概述: Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序. Java提供的网络类库,可以实现无痛的网络连接,联网 ...
随机推荐
- 【repost】document.write的用处
document.write的用处 document.write是JavaScript中对document.open所开启的文档流(document stream操作的API方法,它能够直接在文档流中 ...
- jquery.mobiscroll仿Iphone ActionSheet省市区联动
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="u ...
- html tab页面切换事件。
$(document).bind("visibilitychange",function(e){ //只对tab页面切换有效 //document.visibilityState ...
- Unity中脚本的执行顺序总结(@WhiteTaken)
(Editor)以上是Unity官方文档中的截图,脚本在被挂载到物体上,会启用Editor的方法Reset. (Initialization)当执行脚本开始,初始化的过程中,依次执行的是Awake-& ...
- 大三那年在某宝8块钱买的.NET视频决定了我的职业生涯
前言 谨以此文献给那些还在大学中迷茫的莘莘学子们! 韩愈在<师说>中提出了作为师者应该做的三件事:传道.授业.解惑. 1.传道:培养学生的道德观 2.授业:传授学生专业技能 3.解惑:解答 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)
前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...
- caffe中卷积层和pooling层计算下一层的特征map的大小
pool层,其中ceil是向上取整函数 卷积层:
- 学习ASP.NET 5和MVC6
今天很荣幸的参加了微软开源跨平台讲座,充分认识了下一个版本的ASP.NET所带来的激动人心的特性.虽然过去已经断断续续的了解了一些ASP.NET5和MVC6与EF7的动态,但是都没有这一次来的系统化( ...
- C#定义类型转化 及 格式化字符串
operator 关键字 operator 关键字用来重载内置运算符,或提供类/结构声明中的用户定义转换.它可以定义不同类型之间采用何种转化方式和转化的结果. operator用于定义类型转化时可采用 ...
- 手机GUI自动化测试工具选择
(Graphical User Interface,简称 GUI,又称图形用户接口) 我们需要针对自身产品的需求,从中选取一款合适的工具来实现自动化.对于移动客户端GUI的自动化而言,需要保证选取的工 ...