初涉java(swing常用组件及绘图原理)
2016-09-06 20:53
393 查看
swing
Swing是一个用于开发Java应用程序用户界面的开发工具包。需引入包import javax.swing.*;顶层容器
图形界面至少要有一个顶级Swing容器,顶级Swing容器为其它Swing组件在屏幕上的绘制和处理事件提供支持常用的顶级容器:
JFrame(框架):表示主程序窗口
JDialog(对话框):每个JDialog对象表示一个对话框,对话框属于二级窗口
JApplet(小程序):在浏览器内显示一个小程序界面
一个框架包括边界、菜单栏、工具栏、状态栏,以及中间占主要部分的窗格,窗格也可以看作是一种面板,但它是框架的一个组成部分,组件不会直接放到框架上,而是放在若干个面板上,这些面板再放到窗格上用框架对象的getContentPane()函数来获得窗格,再调用窗格的add()函数放置面板
常用的几种组件
1.标签 (JLabel)可在标签上显示文字、图象或是文字图象的组合。
//显示文字 JLabel labText=new JLabel(“文本标签”); labText.setText("文本标签"); //显示图片 ImageIcon icon = new ImageIcon("image/greenflag20.gif"); JLabel labImage=new JLabel(icon); labImage.setIcon(icon);
2.密码框 (JPasswordField)
用户可以向其中输入文本并加以编辑,和文本框不同的是,向密码框中输入文本时,显示的不是实际输入的文本,而是特殊的回显字符(通常是’*’)。
JPasswordField txtPwd=new JPasswrodField(20);//创建一个密码框 txtPwd.setEchoChar('#');// 设定该密码框的回显字符为'#' char []pwd=txtPwd.getPassword();//取得密码框中的内容
3.菜单
菜单采用的是一种层次结构,最顶层是菜单栏(JMenuBar);在菜单栏中可以添加若干个菜单(JMenu),每个菜单中又可以添加若干个菜单选项(JMenuItem)、分隔线(Separator)或是菜单(称之为子菜单)。
JMemuBar menuBar=new JMenuBar();//创建一个菜单栏 //通常使用框架的setJMenuBar(JMenuBar aMenuBar)方法将菜单栏置于框架中 JMenu menuSysConfig=new JMenu("系统设置(X)");//又根据需要创建多个菜单 menuBar.add(menuSysConfig);//并加入菜单栏中
4.按钮(JButton)
button.setPreferredSize(new Dimension(30,30));//设置按钮的大小 button.setContentAreaFilled(false);//将按钮设置为透明的 // 实例化一个图标对象 ImageIcon image = new ImageIcon(icons[i]); // 实例化按钮对象,并且设置按钮上显示图片 JButton button = new JButton(image); //或者 button.setIcon(new ImageIcon(getClass().getResource("qq.png")));
关于按钮组件更详细的可参考http://blog.sina.com.cn/s/blog_7a00bf750101akw3.html
5.复选框(JCheckBox)
JCheckBox jcb1 = new JCheckBox("主站");// 定义一个复选框 JCheckBox jcb2 = new JCheckBox("论坛");// 定义一个复选框 JCheckBox jcb3 = new JCheckBox("博客");// 定义一个复选框 JPanel panel = new JPanel();// 定义一个面板 panel.add(this.jcb1);// 加入组件 panel.add(this.jcb2);// 加入组件 panel.add(this.jcb3);// 加入组件
更多组件详细可参考http://blog.sina.com.cn/s/blog_4171e80d01009sio.html
例子
下面贴一段代码来表述一个窗口及其按钮,输入框,布局等的实现方法,此处不再赘述package test1; import java.awt.*; import javax.swing.*; public class QqLogin extends JFrame{ //北部区域 JLabel jl1;//图片 //南部区域 JPanel jp1; JButton jb1,jb2,jb3; //中部区域 JTabbedPane jtp;//选项卡窗格 JPanel jp2,jp3,jp4; JLabel jl2,jl3,jl4,jl5; JTextField jtf;//账号框 JPasswordField jpf;//密码框 JButton jb4;//清除按钮 JCheckBox jcb1,jcb2;//隐身和记住密码 public QqLogin() { //创建组件 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 herf='www.qq.com'>申请密码保护,</a>"); jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); jtf=new JTextField(); jpf=new JPasswordField(); jb4=new JButton("清除号码"); jcb1=new JCheckBox("隐身登录"); jcb2=new JCheckBox("记住密码"); jl1=new JLabel(new ImageIcon("1.gif"));//图片由自己将对应名字的图片粘贴在同一包下,为了好看我截图的QQ登录界面的图片 //jl1=new JLabel("你们好"); jp1=new JPanel(); jb1=new JButton("登录"); jb2=new JButton("取消"); jb3=new JButton("向导"); jtp=new JTabbedPane(); jp2=new JPanel(); jp3=new JPanel(); jp3.setBackground(Color.RED); jp4=new JPanel(); jp4.setBackground(new Color(0,0,255)); //将面板添加到选项窗格上 jtp.add("QQ号码", jp2); jtp.add("手机号码",jp3); jtp.add("电子邮箱",jp4); //设置布局 jp2.setLayout(new GridLayout(3,3)); //添加组件 jp1.add(jb1); jp1.add(jb2); jp1.add(jb3); jp2.add(jl2); jp2.add(jtf); jp2.add(jb4); jp2.add(jl3); jp2.add(jpf); jp2.add(jl4); jp2.add(jcb1); jp2.add(jcb2); jp2.add(jl5); this.add(jp1,BorderLayout.SOUTH); this.add(jl1,BorderLayout.NORTH); this.add(jtp,BorderLayout.CENTER); //展现组件 //ImageIcon icon=new ImageIcon("qq.gif"); //this.setIconImage(icon.getImage());给窗体设置图标方法 this.setSize(480,400); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public static void main(String[] args) { // TODO Auto-generated method stub new QqLogin(); } }
运行结果图:
JPanel
JPanel是Java图形用户界面(GUI)工具包swing中的面板容器类,包含在javax.swing 包中,是一种轻量级容器,可以加入到JFrame窗体中。首先可以定义一个MyPanel(我自己的面板)用于绘图和现实绘图的区域,根据需要重写覆盖该类中的方法,
//java绘图原理 package com.test1; import javax.swing.*; import java.awt.*; public class Tanke_1 extends JFrame{ MPanel mp=null; public static void main(String[] args) { // TODO Auto-generated method stub Tanke_1 tanke=new Tanke_1(); } public Tanke_1() { mp=new MPanel(); this.add(mp);//将画板组件添加到JFrame容器中 this.setTitle("画板");//给窗口设置标题 this.setSize(400,300); //设置大小 按像素 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置当关闭窗口的时候保证jvm也退出 this.setVisible(true);//显示 } } //定义一个MyPanel(我自己的面板)用于绘图和现实绘图的区域 class MPanel extends JPanel { //覆盖JPanel的 paint方法 //Graphics是绘图的重要类,可以理解为一只画笔 public void paint(Graphics g) { //1.调用父类函数完成初始化 super.paint(g);//这句话一定不能少 //先画一个圆圈 // g.drawOval(10,10,30,30); // g.drawLine(10, 10, 40, 40);//直线 // g.drawRect(10, 10, 40, 60);//矩形边框,最左上角的点坐标和矩形长宽 // g.setColor(Color.blue);//设置颜色 // g.fillRect(10, 10, 40, 60);//填充矩形 // 椭圆的x,y是对应矩形的最左上角的点的坐标 //在面板上画出图片 // Image im=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/1.jpg"));//把图片的信息加载出来 // 显示图片 // g.drawImage(im, 90, 90, 540,187,this); //如何画出字 g.setColor(Color.red);//颜色 g.setFont(new Font("宋体",Font.BOLD,50)); g.drawString("祖国万岁", 100, 100); } }
相关文章推荐
- 常用的WYSIWYG方式编辑HTML/XHTML的开源JAVA Swing组件
- java基础 ---常用Swing组件
- 【Java】-基础-Swing-常用组件
- Java笔记(10)-图形界面设计、Swing、窗口、JFrame、常用组件和布局、处理事件、MVC结构、对话框、GUI
- JAVA中Swing组件上绘图机制举例
- Java Swing 组件全演示
- 关于 java swing组件加背景图片的问题
- JAVA SWING 组件显示
- Java的常用包和组件
- Java的常用包和组件
- java swing 组件大全----测试Swing所有组件及其相应的事件
- java常用组件下载地址
- java swing技巧1:基于图像的组件-JLabel、JButton、JPanel
- JavaSwing玻璃组件
- JAVA界面组件---swing标签与按钮的使用与介绍
- 疯狂JAVA讲义---第十一章(中):AWT编程-常用组件和事件处理
- 常用的JAVAGUI组件使用
- java swing 组件
- Java swing 组件大全
- java常用组件GUI设计