【Java】使用JFrame监听事件创建一个复制文本功能的窗体程序与按钮快捷键

一、基本目标

设计一个窗体程序,有两个文本框,其中第二个文本框是不可编辑的,有三个按钮,点击Copy按钮能把第一个文本框复制到第二个文本框,点击Clear按钮能把两个文本框的内容清空,也可以用快捷键ALT+R与ALT+Y操作

点击Close按钮,能关闭这个窗体程序

二、基本思想

这个JFrame的布局与各组件名称如下,请联合下面的代码查看:

三、制作过程

请看如下代码:

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

//由于此窗体有触发事件,因此必须使用ActionListener接口
class textbox implements ActionListener{
	//成员变量,一个JFrame,两个JLabel,两个JTextField,三个JButton,三个JPanel
	JFrame f;
	JLabel l1,l2;
	JTextField t1,t2;
	JButton b1,b2,b3;
	JPanel p1,p2,p;
	public static void main(String args[]){
		textbox a=new textbox();
		a.go();
	}
	public void go(){
		//界面标题
		f=new JFrame("textbox");
		//创建2个固定文本,一个叫source一个叫target
		l1=new JLabel("Source");l2=new JLabel("Target");
		//创建2个文本框
		t1=new JTextField();t2=new JTextField();
		//t2文本框为不可编辑的
		t2.setEnabled(false);
		//创建3个按钮,里面的参数分别为其文本
		b1=new JButton("Clear");b2=new JButton("Copy");b3=new JButton("Close");
		//为b1,b2创建快捷键ALT+R与ALT+Y,一般快捷键只会在纯英文按钮中加下划线
		b1.setMnemonic(KeyEvent.VK_R);b2.setMnemonic(KeyEvent.VK_Y);
		//b1,b2,b3触发的事件,分别与下面actionPerformed的Clear事件Copy事件Close事件相对应
		b1.setActionCommand("Clear");b2.setActionCommand("Copy");b3.setActionCommand("Close");
		b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);
		//创建面板
		p=new JPanel();p1=new JPanel();p2=new JPanel();
		//设置外围最大的那个面板p的布局为BorderLayout(),这个布局可以查查资料,不在这里赘述
		p.setLayout(new BorderLayout());
		//把各个部件分别摆上p1,p2
		p1.add(l1);p1.add(t1);p1.add(l2);p1.add(t2);p2.add(b1);p2.add(b2);p2.add(b3);
		//把p1摆上p中的BorderLayout的CENTER位置,p2则是SOUTH位置
		p.add(p1,BorderLayout.CENTER);
		p.add(p2,BorderLayout.SOUTH);
		//p1使用GridLayout2x2布局,p2则使用1x3的,正好摆好各个组件
		p1.setLayout(new GridLayout(2,2));
		p2.setLayout(new GridLayout(1,3));
		f.getContentPane().add(p);
		//窗口大小为320x100,不允许用户自己调整大小,可见,默认不可见
		f.setSize(320,100);
		f.setVisible(true);
		f.setResizable(false);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	//按钮触发时间函数指定要这样写
	public void actionPerformed(ActionEvent e){
		if(e.getActionCommand()=="Clear"){
			//如果触发的时间为Clear,那么把t1,t2的文本清空
			t1.setText("");
			t2.setText("");
		}
		if(e.getActionCommand()=="Copy"){
			//如果触发的时间为Copy,那么把t2的文本就是t1的文本
			t2.setText(t1.getText());
		}
		if(e.getActionCommand()=="Close"){
			//如果触发的时间为Close,就退出这个程序
			System.exit(0);
		}
	}
}

其中,对比于《【Java】JFrame Helloworld》(点击打开链接)一文中的程序,本文已经把画界面这个代码用类封装在text类中的go()方法中,更加具有可移植性

时间: 2024-11-06 15:44:23

【Java】使用JFrame监听事件创建一个复制文本功能的窗体程序与按钮快捷键的相关文章

Android 属性动画监听事件与一个菜单的例子

简单监听事件 package com.example.animation; import android.animation.Animator; import android.animation.Animator.AnimatorListener; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimat

Android 监听事件

安卓中监听事件的三种实现方式 1.匿名内部类的实现方式 2.独立类的实现方式 3.实现接口方式实现 一.匿名内部类的实现 1.首先声明一个Button //声明一个Button private Button Listener1; 2.设置Button的监听器,并且通过匿名内部类的方式实现 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置Bu

非专业码农 JAVA学习笔记 用户图形界面设计与实现-所有控件的监听事件

用户图形界面设计与实现-监听事件 System.applet.Applet (一)用户自定义成分 1.绘制图形 Public voit piant(Ghraphics g){  g.drawLine等图形名称(坐标1234);g.file图形名(坐标123)} 2.设置字体-Font类 (1)定义font:Font myfont=new Font(“字体”,”样式”,字号); 例如:Font myfont=new Font(“宋体”,Font.BOLD,12); (2)引用定义的Font:类/容

SpringBoot基于注解切面监听事件

创建监听器三步骤: 1.事件(event)可以封装和传递监听器中要处理的参数,如对象或字符串,并作为监听器中监听的目标. 2.监听器(listener)具体根据事件发生的业务处理模块,这里可以接收处理事件中封装的对象或字符串. 3.事件发布者(publisher)事件发生的触发者. 代码展示: pom.xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspe

Android中Preference的使用以及监听事件分析

> 在Android系统源码中,绝大多数应用程序的UI布局采用了Preference的布局结构,而不是我们平时在模拟器中构建应用程序时使用的View布局结构,例如,Setting模块中布局.当然,凡事都有例外,FMRadio应用程序中则使用了View布局结构(可能是该应用程序是marvel公司提供的,如果由google公司做,那可说不准).归根到底,Preference布局结构和View的布局结构本质上还是大同小异,Preference的优点在于布局界面的可控性和高效率以及可存储值的简洁性(每个

python hook监听事件

python hook监听事件 作者:vpoet 日期:夏季 # -*- coding: utf-8 -*- # # by oldj http://oldj.net/ # import pythoncom import pyHook def onMouseEvent(event): # 监听鼠标事件 print "MessageName:",event.MessageName print "Message:", event.Message print "T

Zookeeper之Watcher监听事件丢失分析

在上篇博客中,介绍了zookeeper客户Curator对监听事件的封装及应用--<Zookeeper开源客户端Curator之事件监听详解>在讲解部分代码实例的运行结果时我们已经注意到,并不是所有的监听事件都会发送到客户端.比如连续更改一个节点的内容.创建节点再马上删除节点.本篇博客就讨论一下zookeeper监听事件丢失的原因及使用时的注意事项. 案例 package com.secbro.learn.curator; import org.apache.curator.RetryPoli

安卓开发学习日记 DAY5——监听事件onClick的实现方法

今天主要学习了监听事件的是实现方法,就是说,做了某些动作后,怎么监听这个动作并作出相应反应. 方法主要有三种: 1.匿名内部类的方法 2.独立类的方法 3.类似实现接口的方法 以下分别分析: 1.匿名内部类的方法 就是使用innerClass的方式创建监听事件 步骤如下: 1)创建一个button,在xml中拖入一个button即可 2)在源程序中对button进行初始化 就是,先创建一个button btn,然后使用findViewById找到你之前的那个button进行关联,此时请注意fin

PopupMenu-使用实例跟监听事件

今天需要给一个控件添加弹出菜单功能.就顺便学习了下popupMenu的使用,记录下来. 它的使用其实也非常的简单,看如下代码 popupMenu = new PopupMenu(MainActivity.this, eText); popupMenu.getMenuInflater().inflate(R.menu.main,popupMenu.getMenu()); Menu menu = popupMenu.getMenu(); menu.findItem(R.id.search).setV