GUI
一. Graphic User Interface (图形用户界面)
二. swing
- JFrame是GUI中的容器,JButton是最常见的组件-按钮
- 使用时导包 javax.swing.JFrame; javax.swing.JButton;
- JFrame f = new JFrame("窗口名字");
f.setSize(500,300); //窗口的宽和高
f.setLocation(250, 300); // 主窗体设置位置 离左边250,离顶端300
f.setLayout(null); // 主窗体中的组件设置为绝对定位 。若没有设置,按钮会填满窗口。
JButton b = new JButton("按钮的名字"); // 按钮组件
b.setBounds(50, 50, 280, 30); // 同时设置组件的大小和位置 50 50 是在窗口位子 280 30是宽和高
f.add(b);// 把按钮加入到主窗体中
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭窗体的时候,退出程序
f.setVisible(true); // 让窗体变得可见 会对所有的组件进行渲染,所以一定要放在最后面 - 按钮监听
创建一个匿名类实现ActionListener接口,当按钮被点击时,actionPerformed方法就会被调用import java.awt.event.ActionEvent; import java.awt.event.ActionListener; JButton b = new Button("****"); b.addActionListener(new ActionListener() { // 当按钮被点击时,就会触发 ActionEvent事件 // actionPerformed 方法就会被执行 public void actionPerformed(ActionEvent e) { ***************** } });
final
JLabel l =
new
JLabel(); //标签组件
本身是用于显示信息的,一般情况下是不能直接更改器显示 内容的。import
javax.swing.JLabel;
ImageIcon i = newImageIcon(
"图片路径"); //引入图片 import
javax.swing.ImageIcon;
l.setIcon(i);
l.setBounds(在窗口的宽度,在窗口的高度
,图片宽度 ,图片长度);
l.setVisible(false
); //图片不可见
-
键盘监听
f.addKeyListener(
new
KeyListener(){ 内部写按键状态方法 });
publicvoid
keyReleased(KeyEvent e) {} //按键弹起
publicvoid
keyPressed(KeyEvent e) {} //按键下压
publicvoid
keyTyped(KeyEvent e) {}
//按键下压谈起
KeyEvent.getKeyCode() //获取按下的键位 - 鼠标监听
*.addMouseListener(
new
MouseListener(){})
public
void
mouseReleased(MouseEvent e){} //释放鼠标
public
void
mousePressed(MouseEvent e){} //按下鼠标
public
void
mouseExited(MouseEvent e){} //光标移开
public
void
mouseEntered(MouseEvent e){} //光标进入
public
void
mouseClicked(MouseEvent e){
} //单击鼠标 - 鼠标监听适配器
*.addMouseListener(
new
MouseAdapter(){} //在内部重写需要用的鼠标监听方法,不必写用不到的方法
三.容器
- java的图形界面中,容器是用来存放 按钮,输入框等组件的。
- 窗体型容器有两个,一个是JFrame,一个是JDialog
JFrame有最大化最小化和关闭按钮
JDialog只有关闭按钮 - 模态:当一个对话框被设置为模态的时候,其背后的父窗体,是不能被激活的,除非该对话框被关闭
可以把JDialog设置为模态JFrame f =
new
JFrame(
"外部窗体");
JDialog d =new
JDialog(f);
d.setModal(true); //设置为模态
d.setTitle("内部窗体的名字");
d.setLocationRelativeTo(f); //d在f内部显示 f.setResizable(
false
); //窗体不可被大小化
四.布局器
- 绝对定位
f.setLayout(null); //f是JFrame
b.setBounds( , , , ); //b是JButton
//不使用布局器,组件的位置和大小需要单独指定
f.add(b); 顺序布局器
f.setLayout(new
FlowLayout());
JButton b = newJButton(
"**"); //组件的位置大小不需要设置
f.add(b); //组件会水平摆放- BorderLayout
f.setLayout(
new
BorderLayout());
JButton b = new
JButton("**"); //组件的位置大小不需要设置
f.add(b, BorderLayout.NORTH); //组件会按照 北南西东中 摆放 - 网格布局器
f.setLayout(
new
GridLayout(4
,
6
));
//该网格是4行6列
JButton b = newJButton(
"**"); //组件的位置大小不需要设置
f.add(b); //组件会先排满一行再排下一行 - setPreferredSize
只对部分布局器起作用,改变组件显示的大小.b.setPreferredSize(
new
Dimension(
,
));
-
CardLayout
五.组件
- Java图形界面有两组控件,swing 和 awt, 一般使用swing
- 标签Label 显示文字
JLabel l = new JLabel