JavaSwing界面设计(所有控件及示例讲义)_图文
javaSWING讲解PPT课件
第19页/共40页
BorderLayout布局管理器 • BorderLayout型布局容器尺寸缩放原则:
说明
将项添加至项的列表
返回指定索引位置的列表项
返回列表(作为对象)中的项数 将当前选择的项作为一个对象返回
返回当前选择项的索引位置
第15页/共40页
布局管理器
• 用户界面上的GUI组件可以按照一定的格式布局 例如水平排列,或按网格方式排列
• 布局管理器类是一组类,它 • 实现 java.AW youtManage r 接口 • 帮助在容器中放置组件
位置属性,如果试图使用Java语言提供的setLocation(),setSize(),setBounds()等方法,则都会被 布局管理器覆盖。 • 如果用户确实需要亲自设置组件大小或位置,则应取消该容器的布局管理器,方法为:
• setLayout(null)
第22页/共40页
课堂练习
第23页/共40页
SWING容器组件1
Swing 应用程序
主窗口
内容面板
第3页/共40页
顶层容器(每个应用 程序中至少有一个)
主要显示区域包含 GUI 中的可视组件
创建顶层容器
创建容器
设置容器大小 (对框架及面板而言)
设置容器可见度 (对框架及面板而言)
SWING容器组件2
javax.swing 包
常见容器
JFrame
图形用户界面设计Swing常用组件.ppt
JScrollPane scrollPane = new JScrollPane(textArea);
2020年1月25日星期六
NCEPU
Swing的常用组件--JTextArea
文本区的三 种显示方式
2020年1月25日星期六
NCEPU
Swing的常用组件--JTextArea
例:创建包含文本区、文本框和“提交”按钮的窗口。 在文本区中输入文字,单击“提交”按钮,文本 框中会出现同样的文字。
}
class TFFrame extends JFrame { JTextField num1, num2, num3; public void launchFrame() { num1 = new JTextField(10); num2 = new JTextField(10); num3 = new JTextField(15); JLabel lblPlus = new JLabel("+"); JButton btnEqual = new JButton("="); btnEqual.addActionListener(new MyMonitor()); setLayout(new FlowLayout()); add(num1); add(lblPlus); add(num2); add(btnEqual); add(num3); pack(); setVisible(true); }
public class TFPassword { public static void main(String[] args) { new TFFrame2(); }
}
class TF密Fram码e2域exJtePnadsssJFwraomredField
Java17第十四章2-界面设计swing
JPopupMenu:弹出式菜单组件
安卓越科技(北京)有限公司
18
import java.awt.Color; import javax.swing.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class PopupMenuTest { static JPopupMenu popup=null; public static void main(String[] args) { JFrame frame = new JFrame(); frame.setBounds(200,300,200, 300); frame.setTitle("我的第一个小板凳"); //设置不允许调整窗口的大小 frame.setResizable(false); frame.setBackground(Color.ORANGE); popup = new JPopupMenu(); popup.add("徐明华"); popup.add("张燕君"); popup.add("徐诗佳"); popup.add("王子昊"); popup.setName("右击菜单"); frame.add(popup);//在窗体上加右击菜单 frame.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) { if(e.getButton() == MouseEvent.BUTTON3){ popup.show(e.getComponent(), e.getX(), e.getY()); } } });//添加事件监听器 frame.setVisible(true);//显示窗体}}
No5.Java_Swing图形界面2
功能说明
显示确认对话框,等待用户确认(OK/Cancle) 显示输入对话框,等待用户输入信息。以字符串形式返回用户输入的信息 显示消息对话框,等待用户点击OK 显示选择对话框,等待用户在一组选项中选择。将用户选择的选项下标值返回
-17-
消息对话框
通常,将一个ActionListener加入到一个菜单项对象中,以 提供菜单的行为。
-11-
复选菜单项
JCheckBoxMenuItem mi5 = new JCheckBoxMenuItem(“Persistent”);
JCheckBoxMenuItem mi6 = new JCheckBoxMenuItem(“ReadOnly");
-5-
菜单系统
类MenuBar
菜单容器 类Menu 类MenuItem
菜单系统 一般菜单 可撕下菜单 帮助菜单
选项#1
选项#2
菜单中的菜单
选项#3 选项#4
选项#1 选项#2
第三层菜单
选项#3
选项#1 选项#2
非菜单容器
MenuAndPopup.java
-6-
菜单栏
• JMenuBar类用于创建一个菜单栏对象,该组件显 示一个顶级菜单选项列表,每个选项都连接着下 拉菜单。菜单栏是一个可以添加到任何位置的组 件,在正常情况下,显示在框架的顶部。
• 例:ToolBarDemo.java
-16-
标准对话框
• GUI中包含了一组标准的对话框,用于显示消息或获取信息。 • 标准对话框包含在JOptionPane组件中。 • JOptionPane类中提供了四中用于显示不同对话框的静态方法:
方法名
showConfirmDialog showInputDialog showMessageDialog showOptionDialog
java-Swing控件的用法和范例
java-Swing控件的用法和范例类JTableJTable用来显示和编辑规则的二维单元表。
JTable有很多用来自定义其呈现和编辑的设施,同时提供了这些功能的默认设置,从而可轻松地设置简单表。
例如,要设置一个10行10列的表:TableModel dataModel=new AbstractTableModel(){public int getColumnCount(){return10;}public int getRowCount(){return10;}public Object getValueAt(int row,int col){return new Integer(row*col);} };JTable table=new JTable(dataModel);JScrollPane scrollpane=new JScrollPane(table);注意,如果要在单独的视图中(在JScrollPane外)使用JTable并显示表标题,则可以使用getTableHeader()获取并单独显示它。
设计使用JTable的应用程序时,要严格注意用来表示表数据的数据结构。
DefaultTableModel 是一个模型实现,它使用一个Vector来存储所有单元格的值。
该Vector由包含多个Object 的Vector组成。
除了将数据从应用程序复制到DefaultTableModel中之外,还可以TableModel接口的方法来包装数据,这样可将数据直接传递到JTable,如以上示例所示。
这通常可以提高应用程序的效率,因为模型可以自由选择最适合数据的内部表示形式。
在决定使用AbstractTableModel还是使用DefaultTableModel方面有一个好的实践经验,即在创建子类时使用AbstractTableModel作为基类,在不需要创建子类时则使用DefaultTableModel。
JavaSwing图形界面开发(常用组件)
按钮组件综合应用程序运行结果:
图4.10 按钮组件综合应用
29
4.3 本章小结
1、在顶层窗口中添加标签 将标签控件添加到顶层窗口的内容面板上即可。 标签上的文字,可使用“构造器”和“setText()”两种方法来创建。
2、普通按钮控件的添加 将按钮控件添加到顶层窗口的内容面板上即可。 按钮上的文字,可使用构造器创建。
16
4.2.2 如何使用单选按钮 即RadioButton,通过“JRadioButton类” 实现。 如:诸多管理软件中出现的“性别”单选按钮 。
图4.5 单选按钮示例图
要使用单选按钮,同样首先必须创建,然后再使用其 内置的方法来操纵组件。
17
表4.5 单选按钮的构造器
常用方法:与普通按钮类似。
2
4.1 如何使用标签
使用标签组件之前,首先必须要创建“标签组件对象”, 然后才能通过使用这个这个“对象中内置的方法”来操作。
一般而言,组件均通过自身的“构造器”来创建。
3
表4.1 常用的Label构造器
4
表4.2 Label常用内置方法 通过构造器创建Label组件后,即可通过组件内置的方
法来操纵这个组件。
5
使用标签示例程序1---在顶层容器中添加两个标签组件
(使用标签对象初始化方法,为Label赋初始值)
6
程序运行结果:
图4.1 使用对象初始化的方式赋值
7
使用标签示例程序2---在顶层容器中添加两个标签组件
(内置setText()方法赋值)
8
程序运行结果:
图4.2 使用标签内置方法赋值
9
4.2 如何使用按钮
18
单选按钮程序示例:
JavaSwing界面设计(所有控件及示例)PPT课件
选课 JList
确认 JButton
保存 JFileChooser
结果 JTextArea
要求输入完毕按“确认”将该学生的信息记录到“结果”中;按
“保存”将结果保存到一个指定的文件中;基本信息与结
果界面上下分布在一个JSplitPane中;屏幕下方显示当前
时间
22
示例:学生信息管理系统
步骤一:由JFrame创建初始的用户界面,获得JFrame的容器,
JInternalFrame、Box等创建中间容器 ③ 由基本组件类创建有关的组件 ④ 将基本组件按照某种布局添加到中间容器中,根据需
要可能会用到容器的嵌套 ⑤ 将中间容器按照某种布局添加到顶层容器中,形成满
足用户需求的操作界面
20
获得JFrame的容器并添加组件
Container con = getContentPane(); JPanel panel = new JPanel(); JButton butt = new JButton("Press Me"); panel.add(butt); con.add(panel);
3
用户界面概述
一.用户界面的类型
字符用户界面(CUI):例如,MS-DOS 图形用户界面(GUI):例如,Microsoft Windows
二.GUI的组件
组件
基本的控制组件,例如:Button、Label等。 容器:能容纳和排列组件的组件
组件继承它的父容器的性质
4
Label
Frame Window
ng.Object
ponent
java.awt.Container
java.awt.Panel
java.awt.Window javax.swing.JComponent
Java swing布局详解(附示例图)
当选择使用JPanel和顶层容器的content pane时,需要考虑布局管理。
JPanel缺省是初始化一个FlowLayout,而content pane缺省是初始化一个BorderLayout。
下面将分别介绍几种最常用的布局管理器:FlowLayout、BorderLayout、BoxLayout、CardLayout、GridLayout和GridBagLayout。
代码演示每一个布局管理器都会有一个代码演示,xxxLayoutDemo.java(见附件)。
这些文件主要有三个方法组成:addComponentsToPane()提供布局逻辑(依据不同的布局管理器和UI内容)。
Java代码1public static void addComponentsToPane(Container pane) {。
}2/**3*createAndShowGUI()实例化一个JFrame,通过它的ContentPane加载布局逻辑内容。
4*/5private static void createAndShowGUI() {6// Create and set up the window.7JFrame frame = new JFrame("FlowLayoutDemo");8frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);9// Set up the content pane.10addComponentsToPane(frame.getContentPane());11// Display the window.12frame.pack();13frame.setVisible(true);14}15//main()程序入口,单独起一个线程,实例化UI。
16public static void main(String[] args) {17javax.swing.SwingUtilities.invokeLater(new Runnable() {18public void run() {19createAndShowGUI();20}21});22}FlowLayoutFlowLayout类是最简单的布局管理器。
java程序设计swing用户界面
• • • • • • • • •
1.文本域 构造方法 JTextField()--文本域的长度为一个字符 JTextField(int x)--文本域的长度为X个字 符 JTextField(String s)--文本域的初始字符 串为S JTextField(String s,int x)--文本域的初始 字符串为S,长度为X个字符
处理超长文本 • textArea.setLineWrap(true);
• • 例:TextAreaTest
• • • • • • • •
3.标签和标签组 标签是容纳文本的组件 常用来标识别的组件 构造方法: JLabel(String text) JLabel(Icon icon) JLabel(String text,int align) JLabel(String text,Icon,icon,int align)
• CardLayout • CardLayout的容器可以容纳多个组件, 但是实际上同一时刻容器只能从这些组 件中选出一个来显示,就象一叠“扑克
2.解决方法: 创建一个面板,先将组件添加到面板上, 再将面板添加到更大的容器里.代码如下:
• 符号表示 • BorderLayout常量被定义为字符串 • 例:BorderLayout.SOUTH被定义为字符 串:South • 上例应用时可写为: • add(button1,“North”); • add(button2,“South”);
• GridLayout • 把容器划分成若干行乘若干列的网格区 域,组件就位于这些划分出来的小格中 • 可用方法setLayout来设置网格布局 • setLayout(new GridLayout(行数、列数)) • setLayout(new GridLayout(3,4));
java Swing 用户界面组件
第9章 Swing 用户界面组件
9.2 布局管理概述
n
9/50
边界布局(BorderLayout)
n
边界布局将容器划分为五个区域
n
上(北)、下(南)、左(西)、右(东)、中央
n n n n
JFrame容器的默认布局为边界布局 West和East区的宽度不变 North和South区的高度不变 Center区自动填充其他区域
n
n
n
按钮属性
n
text、icon、mnemonic(快捷键) horizontalAlignment、verticalAlignment horizontalTextPosition、verticalTextPosition
n
n
第9章 Swing 用户界面组件
9.4 简单组件
n
20/50
按钮(JButton)
9.2 布局管理概述
n
14/50
构造网格布局管理器
n
public GridLayout(int rows,int columns)
n
根据指定的行数和列数构造一个GirdLayout对象
n
public GridLayout(int rows, int columns, int hGap, int vGap)
2/50
第9章 Swing 用户界面组件
第9章 Swing 用户界面组件
&本章重点 n 9.2 布局管理概述 n 9.4 简单组件 n 9.5 文本输入 &本章难点 n 9.7 菜单 n 9.8 对话框
3/50
第9章 Swing 用户界面组件
9.1 用户界面组件简介
n
第八章 Swing图形用户界面程序设计1[详版课资]
添加组件
myContainer.add( component, position ) component – 需要加入到容器中的组件
positions – (BorderLayout.NORTH)
➢ NORTH, SOUTH, EAST, WEST, CENTER
(底 (中间)
BorderLayout类
例:(GridBagApplet.html)
button1 button2 button3
button4
button5
button6
button7
button8 button9
public void init() { GridBagLayout layout=new GridBagLayout();
GridLayout
布局管理器GridLayout按行与列将容器等分 成网格
每个组件占用具有相同宽度和高度的网格 添加组件占用网格的顺序: 从上到下,从左到右 当一行满了,则继续到下一行,仍然是从左到右
CardLayout
CardLayout的布局方式有点象码“扑克牌” 一个组件压在另一个组件的上面,所以每次 一般只能看到一个组件
标签(JLabel)
标签
为GUI提供文本(主要)或图像(也可以)信息 对应类(JLabel) (JComponent的子类) 可以显示:
➢单行的只读的文本信息 ➢图像 ➢同时显示文本与图像信息
程序一般不修改标签的内容
文本框(JTextField)
文本框(JTextField)
显示单行的文本信息 JTextField extends JTextComponent
§8.1 简介
AWT包主要类的层次关系
网络程序设计java第08章Swing图形用户界面程序设计new
2020/12/23
28
示例
【例8-7】J_Border.java,边界布局管理器例程
2020/12/23
29
CardLayout
• CardLayout的布局方式有点象 “扑克牌” • 一个组件压在另一个组件的上面,所以每
次一般只能看到一个组件
• JComponent——大多数Swing组件类父类
2020/12/23
5
Swing 组件
• 组件和容器是Swing图形用户界面的组成部分: • 容器
– 各种组件必须放在容器 – 容器本身也是一种组件 – 分类
• 顶层容器(小应用程序、对话框和框架) • 一般容器(面板、滚动窗格、分裂窗格、选项卡窗格、工具条) • 其它容器
2020j/1a2/v23a.swing.event 包中,类42 名通常以单词Listener结尾
事件处理机制
• 事件处理步骤
① 程序加入java.awt.event包: import java.awt.event;
② 给所需的事件源对象注册事件监听器: 事件源对象.addXXXListener(XXXListener);
事件处理模型
• 事件:对鼠标、键盘和其他输入设备的各 种操作,一般称为事件。
• GUI是由事件(event)驱动的
– 当用户与GUI交互可以产生事件(events) – 一些常见的交互方式
• 移动鼠标 • 用鼠标点击按钮 • 在文本框中输入数据 • 关闭窗口等
2020/12/23
40
事件处理机制
面板(JPanel)
• 一种中间容器,在面板中添加组件,然后 再将面板添加到其他容器中。
JavaSwing图形界面开发(第8章).ppt
8.1.3 使用ListModel方式创建列表框 ListModel是一个接口,其主要功能是定义一些方法, 让JList组件取得每个项目的值,并可限定项目的显示时间
与方式。
表8.1 ListModel接口定义的方法
8
AbstractListModel抽象类:
只有实现ListModel接口中的所有方法,才能利用构造器建立JList。
第8章
如何使用列表框和下拉列表框组件
列表框---将“所有选项”都列在框中,提供用户选择。
下拉列表框---用户未操作列表框时,只显示出一个数据。但当单击
下拉箭头时,数据将以下拉方式显示。
说明:列表框、下拉列表框均属于“选择性组件”。虽然用途相同,
但各有其使用环境。 一般用法:当数据较少时,使用列表框; 当数据较多时,尽量使用下拉列表框。
表8.2 下拉列表框的构造器
说明:与JList一样,可通过“数组”和“Vector”创建下拉列表框对象。
21
8.2.1 使用数组和Vector创建下拉列表框
22
运行结果:
说明:● 使用Vector和数组差不多。 ● JComboBox控件有addItem方法,此方法在 JList中不具备。
映山红
JList类中“addListSelectionListener()”方法,可 检测用户是否对JList的选取有任何改变。 ListSelectionListener接口中只定义一个方法,即: valueChanged(ListSelectionEvent e);
只有实现这个方法,才能在用户改变选取值时,取得
9
AbstractListModel程序示例:
通过创建一个“实现了抽象类AbstractListModel”的“DataModel类”来创 建一个列表框。