1.GUI的介绍
1.1GUI概述
早期,电脑向用户提供的是单调、枯燥、纯字符状态的“命令行界面(CLI)”。就是到现在,我们还可以依稀看到它们的身影:在Windows中开个DOS窗口,就可看到历史的足迹。后来,Apple公司率先在电脑的操作系统中实现了图形化的用户界面(Graphical User Interface,简称GUI),但由于Apple公司封闭的市场策略,自己完成电脑硬件、操作系统、应用软件一条龙的产品,与其它PC不兼容。这使得Apple公司错过了一次一统全球PC的好机会。
后来,Microsoft公司推出了风靡全球的Windows操作系统,它凭借着优秀的图形化用户界面,一举奠定了操作系统标准的地位。这也造就了世界首富---比尔.盖茨和IT业的泰山北斗微软公司。
在这图形用户界面风行于世的今天,一个应用软件没有良好的GUI是无法让用户接受的。而Java语言也深知这一点的重要性,它提供了一套可以轻松构建GUI的工具。在本章和下一章中,我们将向你充分证明这一点。
1.2Java提供了三个主要包做GUI开发:
java.awt 包 – 主要提供字体/布局管理器
javax.swing 包[商业开发常用] – 主要提供各种组件(窗口/按钮/文本框)
java.awt.event 包 – 事件处理,后台功能的实现。
2.Swing组件
如图所示:swing组件主要可分为三个部分,后面会详细介绍
(1)顶层容器::常用有JFrame,JDialog
(2)中间容器:JPanel,JOptionPane,JScrollPane,JLayeredPane 等,主要以panel结尾。
(3)基本组件:JLabel,JButton,JTextField,JPasswordField,JRadioButton 等。
2.1顶层容器介绍
# |
组件 |
描述 |
1 |
JFrame |
一个普通的窗口(绝大多数 Swing 图形界面程序使用 JFrame 作为顶层容器) |
2 |
JDialog |
对话框 |
2.2中间容器
# |
组件 |
描述 |
1 |
JPanel (相当于div) |
一般轻量级面板容器组件(作为JFrame中间容器) |
2 |
JScrollPane |
带滚动条的,可以水平和垂直滚动的面板组件 |
3 |
JSplitPane |
分隔面板 |
4 |
JTabbedPane |
选项卡面板 |
5 |
JLayeredPane |
层级面板 |
2.3基本组件
# |
组件 |
描述 |
1 |
JLabel |
标签 |
2 |
JButton |
按钮 |
3 |
JRadioButton |
单选按钮 |
4 |
JCheckBox |
复选框 |
5 |
JToggleButton |
开关按钮 |
6 |
JTextField |
文本框 |
7 |
JPasswordField |
密码框 |
8 |
JTextArea |
文本区域 |
9 |
JComboBox |
下拉列表框 |
10 |
JList |
列表 |
11 |
JProgressBar |
进度条 |
12 |
JSlider |
滑块 |
3.API介绍
3.1Jframe组件
JFrame frame = new JFrame("HelloWorldSwing"); |
// 创建及设置窗口 |
frame.setDefaultLookAndFeelDecorated(true); |
// 确保一个漂亮的外观风格 |
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
设置默认的关闭窗口 |
frame.pack(); |
// 显示窗口 |
frame.setVisible(true); |
//这个最好放在最后,不然会出现视图看不到的情况 |
frame.setBounds(600, 300, 500, 400); |
设置窗口的x,y位置,窗口大小x,y. |
frame.add(panel) |
添加panel面板到容器 |
frmIpa.getContentPane().add(panel, BorderLayout.NORTH); |
添加面板到主窗口,布局在北面 |
frmIpa.getContentPane().add(scrollPane, BorderLayout.CENTER); |
添加可滚动面板到主窗口,布局在中间 |
3.2Panel组件
Jpanel
JPanel panel = new JPanel(); |
创建面板容器 |
panel.add(button); |
添加按钮到面板 |
JOptionPane
JOptionPane.showMessageDialog(panel3, "没有选中任何文件", "提示", JOptionPane.WARNING_MESSAGE); |
弹出提示框到panel容器 |
JScrollPane
JScrollPane scrollPane = new JScrollPane(); |
创建可滚动面板 |
scrollPane.setViewportView(textArea); |
设置面板内容 |
3.3功能组件
JLabel
JLabel label = new JLabel("Hello World"); |
添加标签 |
Jbutton
JButton button = new JButton("选择文件"); |
创建按钮 |
button.addActionListener(new ActionListener() {} |
添加操作按钮后的事件监听器 |
JFileChooser
jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES ); |
// 设置文件对话框 |
jfc.showSaveDialog(frmIpa); |
// 显示打开的文件对话框 |
jfc.getSelectedFile(); |
// 获取选择器选择的文件 |
JTextArea
JTextArea textArea = new JTextArea(); |
创建文本区域 |
textArea.setText(content); |
设置内容 |
4.案例代码
4.1UI介绍
主窗口Jframe,
Jframe添加2个Jpanel面板,
北面Jpanel添加JButton,JButton打开JFileChooser文件对话框。
中间JScrollPane添加JTextArea文本区域,文本区域按各自业务逻辑来处理。
4.2代码
1 import java.awt.BorderLayout;
2 import java.awt.event.ActionEvent;
3 import java.awt.event.ActionListener;
4 import java.io.File;
5 import javax.swing.JButton;
6 import javax.swing.JFileChooser;
7 import javax.swing.JFrame;
8 import javax.swing.JOptionPane;
9 import javax.swing.JPanel;
10 import javax.swing.JScrollPane;
11 import javax.swing.JTextArea;
12
13 public class IpaUI {
14 public static JFrame frmIpa;
15 public JTextArea textArea;
16
17 public IpaUI() {
18 // 窗口框架
19 frmIpa = new JFrame();
20 frmIpa.setTitle("ipa工具类");
21 frmIpa.setBounds(600, 300, 500, 400);
22 frmIpa.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
23
24 // 面板1
25 JPanel panel = new JPanel();
26 frmIpa.getContentPane().add(panel, BorderLayout.NORTH);
27 JButton button = new JButton("选择文件");
28 // 监听button的选择路径
29 button.addActionListener(new ActionListener() {
30 @Override
31 public void actionPerformed(ActionEvent e) {
32 // 显示打开的文件对话框
33 JFileChooser jfc = new JFileChooser();
34 jfc.showSaveDialog(frmIpa);
35 try {
36 // 使用文件类获取选择器选择的文件
37 File file = jfc.getSelectedFile();//
38 //这里是我的业务需求,各位不必照抄
39 // String content = IpaService.getIpaInfoMap(file.toString());
40 // textArea.setText(content);
41 } catch (Exception e2) {
42 JPanel panel3 = new JPanel();
43 JOptionPane.showMessageDialog(panel3, "没有选中任何文件", "提示", JOptionPane.WARNING_MESSAGE);
44 }
45 }
46 });
47 panel.add(button);
48
49 // 可滚动面板
50 JScrollPane scrollPane = new JScrollPane();
51 frmIpa.getContentPane().add(scrollPane, BorderLayout.CENTER);
52 textArea = new JTextArea();
53 scrollPane.setViewportView(textArea);
54 //这个最好放在最后,否则会出现视图问题。
55 frmIpa.setVisible(true);
56 }
57 }
5.插件介绍WindowBuilder
总算骗大家看完文章,其实最方便的方法是用插件制作,当然大家先了解完代码原理是最好的哈哈。eclispe安装windowbuilder有两种方式,一种是离线安装,一种是在线安装。
5.1搜索WindowBuilder
找到http://www.eclipse.org/windowbuilder/download.php
根据自己的eclipse版本选择,因为我的是4.8版本了,所以只能在线安装。
5.2.在eclipse的中安装
(1)选择Help - Eclipse MarketPlace
(2) 在商店中搜索windowbuilder ,会出现WindowBuilder插件
(3)一路下一步,进行安装,等待安装结束重启eclipse即可。
5.3WindowBuilder插件的使用
(1)在Eclipe菜单中File - New -Other ,选中WindowBuilder - Swing Designer - JFrame。
(2)打开文件,点击左下角的Design进入视图模式,左边对应代码模式
左上是整个视图结构,左下是单个结构的属性,可以在这里修改窗口的一些属性,
中间是整个swing的界面按钮,前面第二点介绍过的,这里就不说了,
右边就是视图了,可以点击按钮往视图里面添加,如下图。