窗口的基本组件(3)JFrame

    在GUI(图形化用户交互界面)中采用了窗口,按钮,复选框,菜单,文本域这样的图形屏幕组件。

    在JAVA中建立一个GUI程序至少需要三类对象:组件,事件,监听器。其中按钮、文本域、标签、滚动条

和菜单等都是GUI组件。

容器是一种特殊的组件,它可以容纳其他的组件。

事件也是一个对象,他代表我们引起注意的某些事情。列如:按下鼠标或键盘都会生成事件。大多数GUI组件

都可以生成事件,表示对应的那个组件的用户动作。如:按钮组件会生成表示按钮被按下的事件。以GUI为基础

的响应来自用户事件程序称为事件驱动的程序。

监听器也是一个对象,它等待事件的发生,并在事件发生时以某种方式响应它。设计基于GUI程序的大部分工作

就是建立监听器,所监听的事件及产生事件的组件之间的关系

要编写监听器类要完成以下几步:实例化并设置必要的组件

                                                       实现监听器类,定义具体事件发生时的对策

                                                       建立监听器与产生事件之间的关系

基本容器JFrame

    它是Component的子类,它内部定义的常用方法如下:

图片引用自:https://www.cnblogs.com/MichaelLi1994/p/3830410.html


package element;


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.JButton;
import javax.swing.JFrame;


public class SimpleGUiTest1 implements ActionListener{
	JButton but;
	public static void main(String[] args) {
		SimpleGUiTest1 c = new  SimpleGUiTest1();
		c.visible();
	}
	public void visible() {
		JFrame frame = new JFrame("组件");
		but =  new JButton("push!");
		but.addActionListener(this);//建立监听器
		/*
		 * JFrame下的getContentPane()方法是获取此窗口的容器对象
		 * 在容器中添加按钮but
		 * */
		frame.getContentPane().add(but);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(300, 300);
		frame.setVisible(true);
	}
	public void actionPerformed(ActionEvent e) {
		but.setText("shj");
	}
}
一个例子:建立一个窗口,在窗口中进行以下操作:按住按钮push,然后会显示标签push:次数
package element;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class JFrameTest {
	public static void main(String[] args) {
	
		JFrame c = new JFrame("窗口计数器");
		c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		PushCount x = new PushCount();
		c.getContentPane().add(x);;
		c.setSize(300, 300);
		c.pack();//调整窗口大小,以用来适应其他组件
		c.setVisible(true);
	}
}
class PushCount extends JPanel{
	
	private int count ;
	private JButton but;
	private JLabel label;
	
	public PushCount() {
		count = 0;
		but = new JButton("push");
		but.addActionListener(new buttons());
		
		label = new JLabel("pushs:"+count);
		
		add(but);
		add(label);
		
		this.setBackground(Color.white);
		this.setPreferredSize(new Dimension(300,400));
		
		
	}
	public class buttons implements ActionListener{
		public void actionPerformed (ActionEvent e) {
			count++;
			label.setText("pushs:"+count);
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值