图形用户界面GUI(Graphical User Interface),指的是在一个程序中用户可以看到的和与之交互的部分。

JavaAPI中提供两套组件用于支持编写用户界面AWT  and  Swing。

java在初期借助一种窗口开发类库,叫作AWT(Abstract Windows Toolkit,抽象窗口工具箱)来达到在图形接口上平台独立性。

 AWT处理用户界面元素的方法
 把用户界面元素的创建和行为委托给目标平台(Windows、Macintosh、Linux等)上的本地GUI工具(Peers,对等组件)进行处理。
 Peers是本地GUI组件,由AWT来操控,Peers对程序开发者是隐而不见的,各平台所产生的peers与各平台有关 。
 
 
Ø重量组件和轻量组件
l、 与本地对等组件相关联的组件(AWT组件)就被称为重量组件。
lI、 不依赖本地对等组件的组件(Swing组件)就被称为轻量组件。
lII、 重量组件具有平台不一致性。
lV 、轻量组件在重量容器的窗口中绘制,背景可以是透明的。
 
Swing:
    类和接口定义在javax.swing包中,建立在AWT的基础上,属于轻量组件,完全由纯java代码编写,不依赖于任何特定平台,具有更好的平台无关性和和可移植性。
swing采用MVC架构(表层架构模式):
M(模型Model):存储定义组件数据。
V(视图View):从模型中的数据创建组件的可视化表示。
C(控制器Controler):处理用户与组件的交互操作,并在必要时更改模型或视图以影响用户行为。
 
Swing视图部分由两个基本元素组成:容器(container)和组件(component)。
组件是独立的可视化控件(ex:按钮、文本字段)。
容器是一种设计用来放置其他组件的特殊类型的组件。
一个组件要显示就必须放在一个容器内。
Swing中:
重量级容器(继承自AWT的Container类):JFram(窗体)、JDialog(对话框)、JWindow(窗口)、JApplet(小程序)等。
轻量级容器(继承自Swing类JComponent):类JPanel(面板)、类JSpliPane(分隔窗格)、类JScrollPane(滚动窗格)、
           类JTabbedPane(标签窗格)、类JToolBar(工具条)、和一些专用容器:
           类JInternalFrame(内部画框)、JLayeredPane(分隔窗格)、类JRootPane(根窗格)
Swing组件(继承自Swing类JComponent,JComponent继承自AWT类Container和Component):
向用户展示系统的操作和反馈信息,是一个完整的实体,通常不再容纳其他组件作为它的组成部分。
简单组件:按钮(类JButton)、单选按钮(JRadioButton)、复选框(JCheckBox)、组合框(JComboBox)、列表框(JList)、
          文本字段(JTextField)、纯文本区域(JTextArea)等。
复杂组件:菜单(Jmenu)、带样式文本(style text)、表格(JTable)、树(JTree)、
下面是几个方法:
 add( ):将组件添加到该容器中。
 removeAll() :移掉容器中的全部组件。
 remove(Component c) 移掉容器中参数指定的组件。
 validate():每当容器添加新的组件或移掉组件时,调用该方法以保证容器中的组件能正确显示出来。
Ø组件的三要素 
 内容:如按钮的状态、文本框中的文本
 外观显示:如组件的颜色、大小、可见性
 行为:组建对外部刺激(事件)的反应

三要素之间的是相互关联的、

ex:按钮组件
 
 
JFrame(窗体)的特性
 JFrame类其子类创建的对象是窗体。
 JFrame类或子类创建的对象是重量容器。
 不可以把组件直接添加到JFame窗体中,应当把组件添加到内容面板中。
 不能为JFame窗体设置布局,应为JFame窗体的内容面板设置布局。
 JFame窗体通过调用getContentPane()方法得到它的内容面板。
 
ØJFrame类常用方法:
 构造方法
 JFrame() :可以创建一个无标题的窗口。
 JFrame(String s) :创建一个标题为s的窗口。
 常用方法
 public void setBounds(int a,int b,int width,int height)  窗口调用该方法可以设置出现在屏幕上时的初始位置是(a,b),
 即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是height。
public void setSize(int width,int height):设置窗口的大小,窗口在屏幕出现是默认位置是(0,0)。
 public void setVisible(boolean b):设置窗口是可见还是不可见,窗口默认是不可见的。
 public void setResizable(boolean b):设置窗口是否可调整大小,窗口默认是可调整大小的。
public void setDefaultCloseOperation(int operation) :设置单击窗体右上角的关闭图标后,程序会做出怎样的处理。

其中的参数operation取下列有效值:

 DO_NOTHING_ON_CLOSE:什么也不做。
 HIDE_ON_CLOSE:隐藏当前窗口。
 DISPOSE_ON_CLOSE:隐藏当前窗口,并释放窗体占有的其它资源。
 EXIT_ON_CLOSE:结束窗体所在的应用程序。
 
ex:
import javax.swing.JFrame;

public class JFrameTest {

public static void main(String[] args) {
        JFrame jFrame = new JFrame("窗体名称");//或者使用    setTitle("窗体标题");

// 设置初始位置与大小
        jFrame.setBounds(200, 200, 300, 300);
       // 设置大小
        jFrame.setSize(300, 300);
        // 设置居中
        jFrame.setLocationRelativeTo(null);
        // 退出应用程序
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 不允许修改窗口大小
        jFrame.setResizable(false);

// 设置窗体可见
        jFrame.setVisible(true);
    }
}

 
Swing菜单由菜单条(JMenuBar)、菜单(JMenu)和菜单项(JMenuItem)构成。
 菜单条是所有菜单和菜单项的根(容器)。
 JMenuBar  菜单条
 JMenuBar是JComponent类的子类,负责创建菜单条。
 JMenuBar menuBar=new JMenuBar();
 将菜单条放置到JFrame窗口中:

public void setJMenuBar(JMenuBar menubar);

需要注意的是,只能向窗口添加一个菜单条
 
 JMenu 菜单
 JMenu是JComponent类的间接子类,负责创建菜单。
 pulbic JMenu():建立一个没有标题的菜单。
 pulbic JMenu(String s):建立一个指定标题菜单,标题由参数s确定。
 
例如: 创建一个名为“Edit”的菜单,并添加到菜单条中。

JMenu editMenu=new JMenu(“Edit”);

menuBar.add(editMenu);

常用方法
 public void add(MenuItem item):向菜单增加由参数item指定的菜单选项对象。
 public void  add(String s):向菜单增加指定的选项。
 public JMenuItem getItem(int n):得到指定索引处的菜单选项。
 public int getItemCount():得到菜单选项数目。
 
 JMenuItem 菜单项
 JMenu是JComponent类的间接子类,负责创建菜单项。
 public JMenuItem(String s):构造有标题的菜单项。
 public JMenuItem(String text, Icon icon):构造有标题和图标的菜单项。
 创建图标对象 Icon  icon=new ImageIcon(“图标文件名”);
菜单项将被放在菜单里。例如:
JMenuItem pasteItem=new JMenuItem(“Paste”);
editMenu.add(pasteItem);
 
主要方法:
 public void setEnabled(boolean b):设置当前菜单项是否可被选择
 public String getLabel():得到菜单选项的名字。
 public void setAccelerator(KeyStroke keystroke):  为菜单项设置快捷键。
 public static KeyStroke getKeyStroke(int keyCode, int modifiers) :返回KeyStroke对象。
Ø嵌入JMenu子菜单:
菜单项本身还可以是一个菜单,称这样的菜单项为子菜单。
 
使用布局管理器来实现布局设计:
 布局管理器是基于AWT的
 布局管理器的类型
 流布局管理器:FlowLayout
 边界布局管理器:BoderLayout
 卡片式布局管理器:CardLayout
 网格布局管理器:GridLayout
 盒式布局管理器:BoxLayout
 布局管理让容器使用方法setLayout(布局对象)来设计自己的布局。
 
BorderLayout
Window型容器的默认布局,比如Jframe类、JDialog类。
每个被BorderLayout管理的容器均被划分为五个区域:东(EAST) ,南(SOUTH),西(WEST),北(NORTH),中(CENTER)。
容器的每个区域,只能加入一个组件,如果试图加入多个组件,其中只有一个组件是可见的。
对于东南西北这四个边界区域,如果,其中的某个区域没有用,它的大小将变为0,CENTER区域将扩展并占用该区域。
构造方法
BorderLayout():构造一个间距为0的BorderLayout实例
BorderLayout(int hgap,int vgap):构造一个指定间距的BorderLayout实例
在BorderLayout布局管理器的管理下,组建必须通过add()方法加入到容器的五个命名区域之一,否则它们是不可见的。
 方法:add(组件,区域)
 
 
FlowLayout
将组件按照加入的顺序逐个地放在容器中的一行上,一行放满后再另起一个新行。
每一行中的组件按布局指定的方式对齐方,默认情况下是居中对齐。
三种构造方法:

FlowLayout()

FlowLayout(int align)

FlowLayout(int align,int hgap,int vgap)

 
 FlowLayout布局管理器不强行设定组件的大小,而是允许组件拥有自己希望的大小。
 每个组件都有一个getPreferredSize()方法,容器布局管理器会调用此方法取得每个组件希望的大小。
 FlowLayout布局是JPanle容器的默认布局管理器。
 
GridLayout
网格式的布局管理器,它将容器空间划分成若干行乘若干列的网格,每个格放一个组件。
各组件按照从上到下,从左至右的顺序排列。
构造方法:

GridLayout():创建一个只有一行的网格,列数根据实际需要而定

GridLayout(int rows,int cols):创建指定行、列的网格,rows和cols中的一个值可以为0

GridLayout(int rows,int cols,int hgap,int vgap)

使用GridLayout布局设计的一般步骤:
 使用GridLayout的构造方法创建布局对象,指定划分网格的行数和列数
 使用GridLayout布局容器调用方发add将组件加入容器。
 GridLayout布局中每个网格都是相同大小并且强制组件与网格相同大小
 
CardLayout
卡式布局管理器,可以容纳多个组件,但是同一时刻容器只能从这些组件中选出一个来显示,被显示的组件占据容器的整个空间。
选项卡窗格(JTabbedPane)的默认布局是CardLayout。
在JTabbedPane中加入组件:
add(String text,Component c);
指定和该组件c对应的选项卡的文本提示是text。
 
BoxLayout
 用BoxLayout类可以创建盒式布局。
 Box类创建的容器称作一个盒式容器,盒式容器的的默认布局是盒式布局,而且不允许更改盒式容器的布局。
 
用来添加组件的轻容器,称为中间容器。
 JPanel 面板
 JPanel类用来创建一个面板对象,可以向这个面板添加组件(直接使用add方法)。
 使用时需要把这个面板添加到底层容器或其他中间容器中。
 JPanel面板的默认布局是FlowLayout布局。
 构造方法
JPanel():构造一个面板容器对象
JScrollPane滚动窗格
 把一个组件放到一个滚动窗格中,然后通过滚动条来观察这个组件。
 例如,JTextArea不自带滚动条,可把文本区放到一个滚动窗格中。
构造方法

JScrollPane(component  c):构造一个滚动窗格。

JSplitPane拆分窗格
 被分成两部分的容器,拆分窗格有两种类型:
 水平拆分:用一条拆分线把容器分成左右两部分,左面放一个组件,右面放一个组件,拆分线可以水平移动
 垂直拆分:用一条拆分线分成上下两部分,上面放一个组件,下面放一个组件,拆分线可以垂直移动。
 构造方法

JSplitPane(int a, Component b ,Component c):  构造一个拆分窗格

setDividerLocation(double position):拆分窗格设置拆分线的位置。
 
JLayeredPane分层窗格
 如果添加到容器中的组件经常需要处理重叠问题,就可以将组件添加到JLayeredPane容器。
 JLayeredPane将容器分成5个层,容器使用 

add(Jcomponent com, int layer);

添加组件com,并指定com所在的层。

ulayer取值: DEFAULT_LAYER:最底层

PALETTE_LAYER

MODAL_LAYER

POPUP_LAYER

DRAG_LAYER:最上面的层

 JTextField文本框
 用来建立文本框的,用户可以在文本框输入单行的文本。
 构造方法
 JTextField(int x):创建文本框对象,可以在文本框中输入若干个字符,文本框的可见字符个数由参数x指定。
 JTextField(String s) :创建文本框对象,则文本框的初始字符串为s,可以在文本框中输入若干个字符。
 
 主要方法
 public void setText(String s):设置文本框中的文本为参数s指定的文本。
 public String getText() :获取文本框中的文本。
 public void setEditable(boolean b) :指定文本框的可编辑性(默认为可编辑的)。
 public void setHorizontalAlignment(int alignment) :设文本在文本框中的对齐方式,其中alignment的有效值确定对齐方式,如:LEFT、CENTER、RIGHT。
 
 JPasswordField
 建立一个密码框对象
 setEchoChar(char c):设置回显字符(默认的回显字符是‘*’)。
 char[ ] getPassword()方法获取密码框中的密码。
 
 

java-GUI图形用户界面的更多相关文章

  1. java GUI(图形用户界面)

    GUI Graphical User Interface(图形用户接口). 用图形的方式,来显示计算机操作的界面,这样更方便更直观. CLI Command line User Interface ( ...

  2. java第八节 GUI/图形用户界面

    /* *第8讲 GUI/图形用户界面 * AWT的基础知识 * GUI全称是Graphical User Interface,即图形用户界面 * JDK中提供了AWT和Swing两个包,用于GUI程序 ...

  3. 黑马程序员_<<GUI(图形用户界面)--------1>>

    --------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1.  GUI图形用户界面 1.简述 Gra ...

  4. GUI(图形用户界面)

    一.GUI(图形用户界面) GUI Graphical User Interface(图形用户接口) 用图形的方式,来显示计算机操作的界面,这样更方便更直观 CLI Command line User ...

  5. python学习笔记(十 一)、GUI图形用户界面

    python图形用户界面就是包含按钮.输入框.选择框等组件的窗口.主要依赖与工具包进行代码编写.python GUI工具包并发互斥的,你可以选择多个工具包进行安装,有极大选择空间.每个工具包都有不同用 ...

  6. GUI 图形用户界面 [学习笔记]

    今晚返璞归真了一把, 系统了解了一下GUI的有关知识: GUI(Graphical User Interface) 图形用户界面 是指采用图形方式显示的计算机操作用户接口.与早期计算机使用的命令行界面 ...

  7. linux系统中firewalld防火墙管理工具firewall-config(GUI图形用户界面)

    firewall-config是firewalld防火墙管理工具的GUI(图形用户界面)版本,几乎可以实现所有以命令行来执行的操作. firewall-config的界面如下图(在终端直接运行fire ...

  8. python之GUI图形用户界面 2014-4-7

    #图形用户界面1.下载和安装wxPython2.创建并显示一个框架import wx #导入wxPythonapp=wx.App()win=wx.Frame(None)win.Show() #调用窗口 ...

  9. 【Java项目】GUI图形用户界面(不断更新中!)

    <目录> 1 创建一个简单的窗体 2 如何进行事件监听 (1) 按钮监听 (2) 键盘监听 (3) 鼠标监听 3 容器 (1) 创建一个简单的对话框 (2) 创建一个简单的模态对话框 (3 ...

  10. Java GUI图形界面开发工具

    Applet 应用程序     一种可以在 Web 浏览器中执行的小程序,扩展了浏览器中的网页功能. 缺: 1.需要下载 Applet 及其相关文件 2.Applet 的功能是受限制的 优: 3.无需 ...

随机推荐

  1. 5、Linux 系统基本文件管理

    1.Linux系统目录结构 /etc    ----> 配置文件   /boot  ----> 引导分区/挂载点, boot loader 的静态链接文件,存放与Linux启动相关的程序 ...

  2. (转)DataGridView多维表头及其扩展功能

    dataGridView1.RowHeadersVisible = false;把整行选中那一列去掉.如果需要整行选中,新增一按钮列模拟实现.上源码:多维DataGridView 有个简易的方法: 1 ...

  3. python 将字典的键&值从byte类型转换为str类型

    def convert(data): if isinstance(data, bytes): return data.decode('ascii') if isinstance(data, dict) ...

  4. Crt单元

    一.调用单元例:uses crt; 二.清屏例:clrscr; 三.移动光标例:gotoxy(a,b);其中a表示列号,b表示行号 四.清行例:clreol;清除光标所在行光标上及以后的所有字符 五. ...

  5. 关于ILDASM.EXE的知识整理

    因为现在用的VS2010,发现,这个工具自己就带着ILDASM.EXE这个反编译工具 具体的查找方式为: C:\Program Files\Microsoft SDKS\Windows\V7.0\bi ...

  6. Hadoop伪分布式配置:CentOS6.5(64)+JDK1.7+hadoop2.7.2

    java环境配置 修改环境变量 export JAVA_HOME=/usr/java/jdk1.7.0_79 export PATH=$PATH:$JAVA_HOME/bin export CLASS ...

  7. Python图像处理库:Pillow 初级教程

    Python图像处理库:Pillow 初级教程 2014-09-14 翻译 http://pillow.readthedocs.org/en/latest/handbook/tutorial.html ...

  8. yum命令指南

    yum check-update  检查可更新的所有软件包 yum update  下载更新系统已安装的所有软件包yum upgrade  大规模的版本升级,与yum update不同的是,连旧的淘汰 ...

  9. maximo功能修改(初步理解)

    已接触IBM公司的MAXIMO近三个月,在这时间里自己对maximo也有所了解,今天将自己总结写在这里,方便自己的温习和大家的参考,不足之处还望指出,我一定在第一时间内修改. 今天在公司所做的就是完善 ...

  10. C++连接mysql的两种方式(ADO连接和mysql api连接)

    一.ADO连接mysql 1.安装mysql-5.5.20-win32.msi和mysql-connector-odbc-5.3.4-win32.msi(一般两个安装程序要匹配,否则可能连接不上)  ...