黑马程序员_Java基础-GUI

时间:2023-01-27 11:54:08

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1.GUI(图形用户界面)

1.1 GUI

Graphical User Interface(图形用户接口)

用图形的方式,来显示计算机操作的界面。方便直观

 

2.2 CLI

Command line User Interface(命令行用户接口)

即Dos命令行操作。操作不直观

 

2.AwtSwing

2.1 java.awt

Abstract Window ToolKit(抽象窗口工具包)

需要调用本地系统方法实现功能。属于重量级控件(系统关联很大)。

 

2.2 javax.swing

在AWT的基础上,建立的一套图形化系统,提供了许多的组件,皆由Java实现。增强了移植性,属于轻量级控件。

 

 

3.继承关系

3.1 图解

 黑马程序员_Java基础-GUI

 

Window:窗体

Panel:面板,窗体里面的一部分。不能独立存在。

Frame:框架 里面可以装好多组件

Dialog:对话框

FileDialog:文件对话框

Button:按钮

Label:标签,一般来说窗体上面的文字都是这个玩意整出来的

Checkbox:复选框,大家都懂

TextComponent:文本组件

TextArea:文本域,可多行

TextField:单行文本框

 

4.布局管理器(组件排放方式)

4.1 FlowLayout(流式布局)

从左到右的顺序排列,Panel默认的布局

 

4.2 BorderLayout(边界布局)

分东 南 西 北 中五个方向

Frame默认的布局

 

4.3 GridLayout(网格布局)

规则的矩阵 类似HTML里面的table

 

4.4 CardLayout(卡片布局)

点击卡片切换中间内容  类似QQ界面下面的消息-联系人-动态这样的界面

 

4.5 GridBagLayout(网格包布局)

不规则的矩阵 类似HTML中table的跨行

 

 

 

5.制作一个简单的图形化界面

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
public class Test {
public static void main(String[] args) {
Frame f=new Frame("MyFrame");//实例化一个Frame容器
f.setBounds(400, 200, 500, 400);//设置它的显示位置(X,Y坐标)和宽高(width和height)
f.setLayout(new FlowLayout());//设置流式布局
Button button=new Button("有个按钮");//实例化一个按钮组件
f.add(button);//把这个组件添加到容器里面去
f.setVisible(true);//设置容器为可见 false即不可见
}
}


 

6.事件监听

6.1 组成

事件源:大部分组件都是事件源

事件:点击等行为

监听器:监听引发事件的动作

处理方式:对应的具体反应或操作

 

7.事件

7.1 窗体(容器)事件

通过对应窗体(容器)的实例里面的addWindowListener方法设置WindowListener监听器,其实现类 WindowAdapter里面有对应事件的具体操作方法。

 黑马程序员_Java基础-GUI

 

根据不同的需求,重写对应的方法,实现具体的操作。下面是Frame窗体的关闭按钮事件。

 

frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});


7.2 组件所特有的事件

组件所特有的事件操作,是通过设置监听器来监听对应的事件并作出相对操作来实现的。

 

Button组件可以通过其方法addActionListener设置ActionListener监听器,其实现类里面含有事件处理的方法actionPerformed。

 

Button button=new Button("有个按钮");//实例化一个按钮组件
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("单击事件");
}
});


 

TextField组件可以通过其方法addTextListener设置TextListener监听器,其实现类里面含有事件的处理方法textValueChanged。

 

tf.addTextListener(new TextListener() {
@Override
public void textValueChanged(TextEvent e) {
System.out.println("文本改变啦!");
}
});


 

总的来说,不同的组件设置对应的监听器,大概的方法名就是add**Listener这样的格式。看到这样的格式就可以猜测它是为当前组件设置监听器了。就可以执行相应的事件应对操作。

 

7.3 鼠标事件

传入MouseAdapter类,并重写对应事件具体的操作方法。赋予指定事件的具体操作

 

 黑马程序员_Java基础-GUI

根据需求,重写对应的方法,下面重写按钮单击事件的方法

 

button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println(e);
}
});


 

7.4 键盘事件

通过对应组件里面的addKeyListener方法来设置键盘监听器

 黑马程序员_Java基础-GUI

 

根据需求重写对应的方法,实现对应功能。下面重写TextField的键盘按下事件,实现按下alt+enter键退出程序。

 

textField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int code=e.getKeyCode();//获取输入字符的ASCII码
if(e.isAltDown()&&code==KeyEvent.VK_ENTER){//判断是否同时按下ALT+ENTER键
System.exit(0);//退出程序
}
}
});


 

 

8.Swing

8.1 下载与安装

使用Swing,需要下载jigloo插件,下载地址:

http://download.csdn.net/download/gedechaoliu/4961587

 

1.下载成功后,如果是使用MyEclipse的。则把它解压到MyEclipse-8.6\dropins目录下。如下图

 黑马程序员_Java基础-GUI

该文件内含featuresplugins两个文件。然后重启MyEclipse即可

 

2.如果使用的是eclipse。则把它解压到eclipse的目录下。然后在eclipse/links目录下新建一个GUI.txt文本。名字随意。内容为jigloo的对应路径。在eclipse目录下,即是eclipse/jigloo

如下图:

 黑马程序员_Java基础-GUI

黑马程序员_Java基础-GUI

 

links目录下新建GUI.txt文件

 黑马程序员_Java基础-GUI

重启eclipse即可。

 

 

8.2 Swing简单使用

8.2.1 简单按钮触发例子

1.在项目包处右键新建一个other文件

 黑马程序员_Java基础-GUI

 

2.找到GUI Forms,新建一个JFrame文件

 

 黑马程序员_Java基础-GUI

3.效果如下图

 黑马程序员_Java基础-GUI

设置JFramelayout为绝对布局

 黑马程序员_Java基础-GUI

4.拖动一个按钮在JFrame中间

 

 黑马程序员_Java基础-GUI

 

5.在右下角给他新增一个单击事件

 黑马程序员_Java基础-GUI

6.然后在具体代码里面找到该新增的方法,并加上对应的操作

 黑马程序员_Java基础-GUI

7.运行效果,点击退出,即可退出。

 

 黑马程序员_Java基础-GUI

8.2.2 文件打开和保存例子

 

1.拖动JMenuBarJMenuItem完成简单的布局。

 黑马程序员_Java基础-GUI

 

2.加入JScrollPaneJTextArea有滚动条,先放JScrollPane在把JTextArea放其里面。

 

 黑马程序员_Java基础-GUI

3.点击菜单下面的“打开”,设置好对应的单击事件方法,同理“保存”也一样

 黑马程序员_Java基础-GUI

 

4.完成“打开”事件的代码编写。注:chooserjTextArea1都在开头声明了。

 

 黑马程序员_Java基础-GUI

 

//打开事件
private void jMenuItem1ActionPerformed(ActionEvent evt) {
chooser=new JFileChooser();//实例化文件选择组件对象
int value=chooser.showOpenDialog(this);//调用其打开文件选择对话框方法并返回状态值
if(value==JFileChooser.CANCEL_OPTION){//判断是否点中了取消按钮,如果是则不执行下面代码
return;
}
File file=chooser.getSelectedFile();//获取选中文件的路径
BufferedReader bufr;
try {
bufr = new BufferedReader(new FileReader(file));//实例化一个文件读取缓冲区对象
String line=null;
while((line=bufr.readLine())!=null){//依次读取文件
jTextArea1.append(line+LINE);//加入到文本域中并根据系统的换行符换行
}
bufr.close();//关闭文件读取缓冲区对象
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


 

5.完成“保存”事件的编写

 

//保存事件
private void jMenuItem2ActionPerformed(ActionEvent evt) {
chooser=new JFileChooser();
int value=chooser.showSaveDialog(this);//调用其保存文件选择对话框方法并返回状态值
if(value==JFileChooser.CANCEL_OPTION){
return;
}
File file=chooser.getSelectedFile();
try {
BufferedWriter bufw=new BufferedWriter(new FileWriter(file));//实例化写入文件缓冲区对象
bufw.write(jTextArea1.getText());//写入文本域中的数据
bufw.close();//关闭对象
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


 

6.运行效果

 

打开

 

 黑马程序员_Java基础-GUI

保存

 黑马程序员_Java基础-GUI

 

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------