前沿

  1. JAVA的swing可以在不同平台运行,因为其源代码纯JAVA,只是运行效率也没那么高。AWT是另一种Sun公司开发的,但是这个包由于调用的是系统图形库,所以不能实现在不同设备的UI相同,所以swing轻量级的UI应运而生。
  2. 用户界面设计可以用MVC模型表示

MODEL                     :数据,业务逻辑规则

/                             \

VIEW                     —             CONTROL                        :UI以及控制,显示逻辑

swing类库组织结构图

创建图形用户界面程序的第一步是创建一个容器类以容纳其他组件,常见的窗口就是一种容器。容器本身也是一种组件,它的作用就是用来组织、管理和显示其他组件。

容器分两种:

  1. 顶层容器:JFrame(框架窗口)、JDialog(对话框)、JApplet(小程序)
  2. 中间容器:
  • JPanel:表示一个普通面板,是最灵活、最常用的中间容器。
  • JScrollPane:与 JPanel 类似,但它可在大的组件或可扩展组件周围提供滚动条。
  • JTabbedPane:表示选项卡面板,可以包含多个组件,但一次只显示一个组件,用户可在组件之间方便地切换。
  • JToolBar:表示工具栏,按行或列排列一组组件(通常是按钮)。

建立一个窗口的两种方式

  1. 直接继承JFrame: extends JFrame

  2. 在类内构造JFrame :JFrame jf = new JFrame("这是一个JFrame窗体");

一般还会设置窗口是否可见(默认不可见),窗口的大小,以及窗口的标题和关闭方式

        jf.setVisible(true);        // 设置窗体可视jf.setSize(500, 350);        // 设置窗体大小jf.setBounds(100,100,500,375) // 和上面差不多 设置窗口的位置和大小jf.setTitle("陈鑫泉大帅哥");  // 标题jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        // 设置窗体关闭方式/** 在我们打开一个窗口,其右上角往往有个X,这个方法就是定义当用户点X时,程序该如何响应。有四种可能性。1.不做任何反应。  JFrame.DO_NOTHING_ON_CLOSE(在 WindowConstants 中定义)2.仅仅隐藏。任务管理器中还有 JFrame.HIDE_ON_CLOSE(在 WindowConstants 中定义)3.关闭窗口。(该窗口) JFrame.DISPOSE_ON_CLOSE(在 WindowConstants 中定义)4.关闭窗口,并结束所有线程。JFrame.EXIT_ON_CLOSE(在 JFrame/WindowConstants 中定义)(默认)*/

为了实现一次编写到处运行的目标,swing提供了布局管理器,来替代传统设置坐标系的方法,不至于在不同分辨率的设备上出错

布局管理器

布局管理器默认开启,若要关闭可执行

getContentPane().setLayout(null);

常见布局管理器的种类有

1.FlowLayout布局管理器:顾名思义一个接着一个,从上到下,从左到右排布。

  • FlowLayout():默认居中对齐方式、5 像素的水平和垂直间隔。
  • FlowLayout(int align):align 表示组件的对齐方式,对齐的值必须是 FlowLayoutLEFT、FlowLayout.RIGHT 和 FlowLayout.CENTER,居左对齐、居右对齐、居中对齐。
  • FlowLayout(int align, int hgap,int vgap): align 表示组件的对齐方式;hgap 表示组件之间的横向间隔;vgap 表示组件之间的纵向间隔,单位是像素。
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.*;
public class FlowLayoutDemo
{public static void main(String[] agrs){JFrame jFrame=new JFrame("Java第四个GUI程序");    //创建Frame窗口JPanel jPanel=new JPanel();    //创建面板JButton btn1=new JButton("1");    //创建按钮JButton btn2=new JButton("2");JButton btn3=new JButton("3");JButton btn4=new JButton("4");JButton btn5=new JButton("5");JButton btn6=new JButton("6");JButton btn7=new JButton("7");JButton btn8=new JButton("8");JButton btn9=new JButton("9");jPanel.add(btn1);    //面板中添加按钮jPanel.add(btn2);jPanel.add(btn3);jPanel.add(btn4);jPanel.add(btn5);jPanel.add(btn6);jPanel.add(btn7);jPanel.add(btn8);jPanel.add(btn9);//向JPanel添加FlowLayout布局管理器,将组件间的横向和纵向间隙都设置为20像素jPanel.setLayout(new FlowLayout(FlowLayout.LEADING,20,20));jPanel.setBackground(Color.gray);    //设置背景色jFrame.add(jPanel);    //添加面板到容器jFrame.setBounds(300,200,300,150);    //设置容器的大小jFrame.setVisible(true);jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
}

      

2.BorderLayout布局管理器:上下左右中四大块:是 Window、JFrame 和 JDialog 的默认布局管理器

  • BorderLayout():创建一个 Border 布局,组件之间没有间隙。
  • BorderLayout(int hgap,int vgap):创建一个 Border 布局,其中 hgap 表示组件之间的横向间隔;vgap 表示组件之间的纵向间隔,单位是像素。
import javax.swing.*;
import java.awt.*;
public class BorderLayoutDemo
{public static void main(String[] agrs){JFrame frame=new JFrame("Java第三个GUI程序");    //创建Frame窗口frame.setSize(400,200);frame.setLayout(new BorderLayout());    //为Frame窗口设置布局为BorderLayoutJButton button1=new JButton ("上");JButton button2=new JButton("左");JButton button3=new JButton("中");JButton button4=new JButton("右");JButton button5=new JButton("下");frame.add(button1,BorderLayout.NORTH);frame.add(button2,BorderLayout.WEST);frame.add(button3,BorderLayout.CENTER);frame.add(button4,BorderLayout.EAST);frame.add(button5,BorderLayout.SOUTH);frame.setBounds(300,200,600,300);frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
}

3.GridLayout布局管理器:网格状

  • GridLayout(int rows,int cols):创建一个指定行(rows)和列(cols)的网格布局。布局中所有组件的大小一样,组件之间没有间隔。
  • GridLayout(int rows,int cols,int hgap,int vgap):创建一个指定行(rows)和列(cols)的网格布局,并且可以指定组件之间横向(hgap)和纵向(vgap)的间隔,单位是像素。
package ch17;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.*;
public class GridLayoutDemo
{public static void main(String[] args){JFrame frame=new JFrame("GridLayou布局计算器");JPanel panel=new JPanel();    //创建面板//指定面板的布局为GridLayout,4行4列,间隙为5panel.setLayout(new GridLayout(4,4,5,5));panel.add(new JButton("7"));    //添加按钮panel.add(new JButton("8"));panel.add(new JButton("9"));panel.add(new JButton("/"));panel.add(new JButton("4"));panel.add(new JButton("5"));panel.add(new JButton("6"));panel.add(new JButton("*"));panel.add(new JButton("1"));panel.add(new JButton("2"));panel.add(new JButton("3"));panel.add(new JButton("-"));panel.add(new JButton("0"));panel.add(new JButton("."));panel.add(new JButton("="));panel.add(new JButton("+"));frame.add(panel);    //添加面板到容器frame.setBounds(300,200,200,150);frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
}

鉴于本人找到更好的教程,此处就不做重复工作,提供连接

Java Swing

JAVA——界面设计Swing教程相关推荐

  1. Java界面设计的用途

    一.Java界面设计的用途: JavaSE(Java Standard Edition)即Java标准版,一般也可以理解作Java桌面版.开发者可以通过JavaSE开发丰富并且强大的具有图形界面的桌面 ...

  2. [转]用Eclipse进行可视化Java界面设计

    http://www.diybl.com/course/3_program/java/javashl/200726/11950.html 最近,Eclipse开源项目终于推出了期待已久的Visual ...

  3. 精选31个网站界面设计实践教程

    设计一个网站从来都不是一件容易的事.如果你去询问一位在该行业有丰富经验的网页设计师,他会告诉你以前根本没有太多关于Web设计/开发的资源.文章和各种沟通交流平台,更不用说高质量免费教程了.   如果您 ...

  4. 第五页 网页界面设计系列教程——文字的编排设计

    以语言进行信息传达时,语气.语调以及面部表情.姿态手势是语言的辅助和补充,而在界面设计中,文字的字体.规格及其编排形式,就相当于文字的辅助信息传达手段. 宋体字型结构方中有圆,刚柔相济,既典雅庄重,又 ...

  5. java图形界面设计 swing之JTable表格的创建使用-添加鼠标监听

    最近用java设计了一个桌面管理系统, 在数据展示模块的时候遇到了一点问题,找不到好的展示方式 最后发现了JTable这个类, 主要涉及这个类的构造与使用 注意:JTable都需要在JScrollPa ...

  6. java界面设计素材_9.java图形用户界面设计.ppt

    9.java图形用户界面设计.ppt 还剩 150页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 151v 程 ...

  7. java界面设计股票_利用JAVA实现股票交易系统设计参考.doc

    利用JAVA实现股票交易系统设计参考 目 录 摘要1 关键词1 Abstract2 Key words2 1 概述3 1.1 Java体系结构3 1.2 Java的优点3 1.3 Java的应用3 2 ...

  8. java界面设计 代码_Android开发——纯JAVA代码方式界面设计

    之前我们写Android页面都是在XML文件里写的,今天我们换个口味,在JAVA文件里写我们的Android页面.至于为什么要用java来写,不直接在XML文件里写,这个问题的答案很简单,因为麻烦嘛, ...

  9. 实现计算景区门票打折界面(JAVA界面设计)

    题目描述:需要为一个景区实现计算景区门票的程序,已知成年人的门票价格是100元,儿童票打3折,老年票打5折.使用抽象类来为任意多张不同类型的票计算总价.其UML类图如下所示. 解题思路:本题为我们老师 ...

最新文章

  1. 白盒测试--基本路径测试法
  2. RabbitMQ(四):RabbitMQ与Spring Boot简单整合 快速尝鲜版
  3. 自定义状态栏notification布局
  4. 2.1.1 Speed Limit
  5. SQL中的撤销索引、表以及数据库
  6. .Net Discovery系列之四 深入理解.Net垃圾收集机制(下)
  7. Wordpress不同页面显示不同小工具
  8. 首款预装鸿蒙2.0系统新机入网,4G版!
  9. 设计灵感|美容护肤主题,图文排版在Banner中的正确打开位置!
  10. traefik 结合 docker-compose 的快速安装及使用
  11. 操作系统课后答案第三章
  12. 万恶的流氓首页~~我要干掉你
  13. 中国大陆加港澳台手机正则验证
  14. open用法 vba_open方法读写文件
  15. 嵌入式编程规范与原则
  16. 读取word、pdf某些位置的值
  17. 使用.NET Micro ORM “Symbiotic”的简单 CRUD
  18. 谷歌学术导出参考文献(BibTeX)报错 403
  19. 用户绑定QQ邮箱找回密码
  20. RxJava从入门到精通:RxJava源码初步分析

热门文章

  1. 浅析面对新冠肺炎疫情,如何通过供应链弹性管理应对风险?
  2. 计蒜客 11070 Ivan 的等待焦虑症发作了
  3. python Windows计划任务运行程序和脚本
  4. python文本挖掘与分析:歌曲《说散就散》网易云音乐平台用户评论分析
  5. Hive优化【提高效率,减少资源浪费等】
  6. 电子科技大学操作系统期末复习笔记(二):进程与并发控制
  7. 使用DigestUtils实现md5加密算法
  8. 空闲时间可以做些什么赚钱、推荐几个业余时间做的兼职副业
  9. [转]ASP.NET验证发生前无法调用 Page.IsValid。应在 CausesValidation=True 且已启动回发的控件...
  10. linux alsa asoc总结