【java学习】GUI 图形程序设计
1,相关插件
对于新手来说,不要在一开始使用此类插件。当你能自己写出来代码的时候,才是使用此类插件的时候,为了加快开发效率。加油!
1)eclipse windowbuilder可视化设计界面
①安装
登陆网址:http://eclipse.org/windowbuilder/download.php
选择版本->【link】
eclipse中:【help】->【Install New Software】安装。
重启eclipse
②使用
【New】->【Other】
选择【WindowBuilder】->【Swing Designer】->【Application Window】
即可建立可视化设计。
2,AWT(Abstract Window Toolkit,抽象窗口工具包)
1)概念
java.aw。
该包提供了一套与本地图形界面进行交互的接口,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系,称之为peers,当利用AWT编写图形用户界面时,实际上是在利用本地操作系统所提供的图形库。由于不同 操作系统的图形库所提供的样式和功能是不一样的,在一个平台上存在的功能在另一个平台上则可能不存在。为了实现Java语言所宣称的“一次编写,到处运行(write once, run anywhere)”的概念,AWT不得不通过牺牲功能来实现平台无关性,也即AWT所提供的图形功能是各种操作系统所提供的图形功能的交集。
2)Frame(框架)
用于描述顶层窗口。
3)AWT中的对象
Component类:是一个具有图形表示能力的对象,可在屏幕上显示,并可与用户进行交互。典型图形用户界面中的按钮(Button)、复选框、和滚动条都是组件示例。
Container类:可以包含其他AWT组件的组件(Frame)。
3,Swing(用户界面开发工具包)
1)概念
javax.swing。
基于AWT架构之上,使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。 工具包中所有的包都是以swing作为名称,例如javax.swing,javax.swing.event。
优点:
- swing拥有一个丰富、便捷的用户界面元素集合。
- swing对平台的依赖很小,意味着他有很少的关于平台的bug。swing对平台的依赖很小,意味着他有很少的关于平台的bug。
- 给予用户一致的感觉。给予用户一致的感觉。
注意:
- swing类位于javax.swing包中。包名表示这是Java的一个扩展包。不过在1.2版本后,每个Javase实现中都必须包含他。
- 所有的swing组件都必须由事件分派线程(Event dispatch thread)进行配置,线程将按键控制和鼠标点击转移到用户接口组件中。但是许多swing程序并没有这么做,而是直接在主程序中完成初始化。由于swing 组件很复杂,jdk程序员不能保证这种方式的安全性 ,为了以防万一,这是最好的选择。
2)JFrame
扩展于Frame类,是极少数几个不绘制在画布上的Swing组件之一。因此它的修饰部件(按钮、标题栏、图标等)由用户的窗口系统绘制,而不是由Swing绘制。
①定义一个框架类:
class SimpleFrame extends JFrame{
public SimpleFrame(){
setSize(300,200);
} // 设置框架大小,如果没有明确地指定框架的大小,所有框架的默认值为0*0。
}
实例框架对象:
SimpleFrame frame = new SimpleFrame();
②常用方法
JFrame类的常用方法 | 类型 | 描述 |
---|---|---|
JFrame() | 构造方法 | 创建一个普通的窗体对象 |
JFrame(String a) | 构造方法 | 创建一个窗体对象,并指定标题 |
setSize(int width,int height) | 普通方法 | 设置窗体大小 |
setBackgorund(color.red) | 普通方法 | 设置窗体背景颜色 |
setLocation(int x,int y) | 普通方法 | 设置组件的显示位置 |
setLocation(point p) | 普通方法 | 通过point来设置组件的显示位置 |
setBounds(Rectangle r) | 移动组件并调整其大小,使其符合新的有界矩形 r。由 r.x 和 r.y 指定组件的新位置,由 r.width 和 r.height 指定组件的新大小 | |
setVisible(true/false) | 普通方法 | 显示或隐藏组件 |
add(Component comp) | 普通方法 | 向容器中增加组件(Java SE5.0) |
setLayout(LayoutManager mgr) | 普通方法 | 设置局部管理器,如果设置为null表示不使用 |
pack() | 普通方法 | 调整窗口大小,以适合其子组件的首选大小和局部 |
getContentpane() | 普通方法 | 返回此窗口的容器对象 |
setIconImage | 用于告诉窗口系统在标题栏、任务切换窗口等位置显示哪个图标,对应getIconImage() | |
setTitle(String s) | 用于改变标题栏的文字。对应方法getTitle() | |
setResizable(boolean b) | 框架的大小是否允许用户改变。 | |
dispose() | 只关闭了当前窗体 | |
System.exit(0) | 退出所有程序 |
3)常用控件
①JButton
②JLabel 标签
③输入框
JEditorPane
多行编辑文本框。
JTextPane
是JEditorPane的子类,支持styled text,相当于富文本框,可以插入图片,html代码等。
JTextField
允许编辑单行文本。
JTextArea
只支持unstyled text,可编辑的。
方法 | 描述 |
---|---|
setEditable(boolean b) | 是否可编辑 |
④JTextArea 多行文本区域
显示纯文本的多行区域。
方法 | 描述 |
---|---|
JTextArea() | 创建一个内容为空的文本区 |
JTextArea(Document doc) | 创建具有指定文档的文本区 |
JTextArea(Document doc,String text,int rows,int columns) | 创建具有指定文档,行数,列数的文本区 |
JTextArea(int rows,int columns) | 指定行数,列数的文本区 |
JTextArea(String text) | 指定文本内容的文本区 |
JTextArea(String text,int rows,int columns) | 指定文本内容和行数,列数的文本区 |
public void append(String str) | 将给定文本追加到文档结尾。 |
boolean getLineWrap() | 获取文本区的换行策略。 |
public int getRows() | 返回 TextArea 中的行数。 |
public boolean getWrapStyleWord() | 获取换行方式(如果文本区要换行)。 |
public void setWrapStyleWord(boolean word) | 设置换行方式(如果文本区要换行) |
public void insert(String str, int pos) | 将指定文本插入指定位置。 |
public void setColumns(int columns) | 设置此 TextArea 中的列数。 |
public void setFont(Font f) | 设置当前字体。 |
public void setLineWrap(boolean wrap) | 设置文本区的换行策略。 |
public void setRows(int rows) | 设置此 TextArea 的行数。 |
public void setEditable(boolean b) | 设置文本区的编辑状态。参数为true表示可编辑状态,为false则表示不可编辑状态 |
将JTextArea放入JScrollPane中,这样就能利用滚动的效果看到输入超过JTextArea高度的文字。
⑤ JScrollPane 滚动条
方法 | 描述 |
---|---|
JscrollPane() | 创建一个滚动条,水平和垂直都可以显示 |
JscrollPane(Component view) | 创建一个显示指定组件内容的滚动条,当组件的内容超过视图大小就会显示水平和垂直的的滚动条 |
JscrollPane(Component view,int vsbPolicy,int hsbPolicy) | 创建一个显示指定组件内容的滚动条,且有指定滚动策略的滚动条 |
JscrollPane(int vsbPolicy,int hsbPolicy) | 创建一个有指定滚动策略的滚动条 |
public int getHorizontalScrollBarPolicy () | 获取水平滚动策略值 |
public int getVerticalScrollBarPolicy() | 获取垂直滚动策略值 |
public void getHorizontalScrollBarPolicy () | 设置水平滚动策略值 |
public void getVerticalScrollBarPolicy() | 设置垂直滚动策略值 |
public boolean isWheelScrollingEnabled() | 设置是否进行滚动以响应鼠标滚轮 |
public void setViewportView(Conponent view) | 设置滚动条中的滚动组件 |
public void setWheelScrollingEnabled(boolean handleWheel) | 启动/禁用对鼠标滚轮滚动的移动响应 |
⑥JPanel
一个JPanel 类往往是用来承载其他控件的,其主要作用是为其他的控件提供空间作为支撑,且可以在属性中设置其背景色。需要设置布局Layout.
BorderLayout (边界布局)
容器划分为东、西、南、北、中五个区域,每个区域只能放置一个组件。
GridLayout (网格布局)
容器的空间划分成M×N列的网格区域, 每个区域只能放置一个组件。
FlowLayout (默认布局,流式布局)
组件按照加入的先后顺序按照设置的对齐方式从左向右排列,一行排满到下一行开始继续排列。
属性设置
jp.setPreferredSize(new Dimension(300, 150));//设置JPanel的大小
jp.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); //设置边距
⑦弹框
JOptionPane.showMessageDialog(null, "消息不能为空");
4,创建图形化界面
1)步骤
1、创建Frame窗体。
2、对窗体进行基本设置,如大小,位置,布局。
3、定义组件。
4、将组件通过窗体的add方法添加到窗体中。
5、让窗体显示,通过setVisible(true)。