目录
GUI编程
1. GUI概念
GUI(Graphical User Interface)即图形用户界面 , 用图形的方式,来显示计算机操作的界面,这样更方便更直观 较于在Java之前的篇章中,脱离了控制台,能够进行用户交互,使程序看上去更加友好
相关包:
- java.awt : 需要调用本地系统方法实现功能,属于重量级组件
- java.swing : 在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级组件
GUI继承体系
2. 容器组件
概述
Java的图形用户界面的基本组成部分是组件(Component),组件是一个以图形化的方式 显示在屏幕上并能与用户进行交互的对象
组件不能独立地显示出来,必须将组件放在一定的容器(container)中才 可以显示出来。 容器可以容纳多个组件,通过调用容器的add(Component comp)方法 向容器中添加组件。
Frame和Panel是最常用的容器
常用容器
JFrame
JFrame是Java中的一个类,它是一个容器,允许程序员把其他组件(Swing 的三个基本构造块:标签、按钮和文本字段)添加到它里面,把它们组织起来,并把它们呈现给用户。
JFrame的构造方法
构造方法 | 说明 |
---|---|
JFrame() |
构造一个无标题的不可见的新窗口 |
JFrame(String title) |
构造一个标题为 title 的不可见的新窗口 |
JFrame的常用方法
方法 | 说明 |
---|---|
void remove(Component comp) | 从该容器中移除指定组件 |
void setDefaultCloseOperation(int operation) | 设置用户在此窗体上发起 “close” 时默认执行的操作 |
void setSize(int width, int height) | 设置窗口大小 |
void setLocation(int x,int y) | 设置窗口的位置 |
void setLocationRelativeTo(Component c) | 设置窗口相对参数组件的位置,为null居于屏幕中央 |
void setVisible(boolean b) | 设置窗口是否可见,默认不可见 |
void setResizable(boolean b) | 设置窗口是否可调整大小,默认可调整 |
void setBounds(int x, int y, int width, int height) | 设置左上角坐标及窗口大小 |
void setTitle(String title) | 设置窗口标题 |
void setIconImage(Image image) | 设置窗口标题图片 |
void dispose( | 释放窗 |
package java_gui.framedemo1;
import javax.swing.*;
public class FrameDemo1 extends JFrame {
public static void main(String[] args) {
FrameDemo1 frameDemo1 = new FrameDemo1();
frameDemo1.setFrame();
}
//设置窗口
public void setFrame(){
/*
窗体基本特征
*/
this.setSize(400,200);
this.setTitle("窗口标题");
this.setResizable(false);//设置窗口是否可拖拽
//this.setLocation(400, 100);//
this.setIconImage(new ImageIcon("p5.jpg").getImage());//这是标题图片
this.setLocationRelativeTo(null);//设置窗口居中
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
//this.setBounds(100, 100, 400, 400);
this.setVisible(true);//设置窗体可见,放在所有设置下方
}
}
运行结果:
JPanel
JPanel提供面板,是轻量级的容器
面板中可以添加其他组件,也可以设置布局,我们一般使用面板来实现布局嵌套
JPanel的构造方法
构造方法 | 说明 |
---|---|
JPanel() |
创建一个新面板 |
JPanel(LayoutManager layout) |
创建一个指定布局的面板 |
package java_gui.framedemo1;
import javax.swing.*;
import java.awt.*;
public class FrameDemo2 extends JFrame{
public static void main(String[] args) {
FrameDemo2 frameDemo2 = new FrameDemo2();
frameDemo2.setFrame();
}
//设置窗口
public void setFrame(){
/*
窗体基本特征
*/
this.setSize(400,200);
this.setTitle("窗口标题");
this.setResizable(false);//设置窗口是否可拖拽
//this.setLocation(400, 200);//
this.setIconImage(new ImageIcon("p5.jpg").getImage());//这是标题图片
this.setLocationRelativeTo(null);//设置窗口居中
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//this.setBounds(100, 100, 400, 400);
//将面板加到窗口中
this.add(setPanel(new JPanel()));//this表示窗口
this.setVisible(true);//设置窗体可见,放在所有设置下方
}
//设置面板
public JPanel setPanel(JPanel jPanel){
/*
创建面板
*/
jPanel = new JPanel();
jPanel.setBackground(Color.green);//设置背景色
return jPanel;//返回创建的面板
}
}
运行结果:
3. 常用组件
JButton(按钮)
构造方法
构造方法 | 说明 |
---|---|
JButton() | 创建一个按钮 |
JButton(String text) | 创建一个带文本的按钮 |
JButton(Icon icon) | 创建一个带图标的按钮 |
JButton(String text, Icon icon) | 创建一个带文本和图标的按钮 |
JButton jButton1=new JButton("确定");
JButton jButton2=new JButton("取消");
jPanel.add(jButton1);
jPanel.add(jButton2);
方法:
方法 | 说明 |
---|---|
void setText(String text) | 设置按钮上的文本 |
String getText() | 获得按钮上的文本 |
void setBackground(Color bg) | 设置按钮的背景色 |
Color getBackground() | 获得按钮的背景色 |
void setEnabled(boolean b) | 设置是否启用按钮 |
void setVisible(boolean b) | 设置按钮是否为可见 |
void setToolTipText(String text) | 设置按钮的悬停提示信息 |
//按钮背景色
jButton1.setBackground(Color.GRAY);
//悬停提示
jButton2.setToolTipText("此按钮已禁用");
//按钮禁用
jButton2.setEnabled