学习Java28天

本文详细介绍了Java Swing中的文本框组件,包括JTextField和JPasswordField,以及它们在用户输入后的ActionEvent处理。此外,还讲解了键盘事件、WindowEvent和鼠标事件的监听与响应,展示了如何通过键盘和鼠标交互实现不同功能。
摘要由CSDN通过智能技术生成

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、文本框

文本框是接受用户输入的一种组件,Swing将文本组件分为三大类
1.文本字段(text fields),包括类JTextField和JPasswordField,用于显示和编辑较短的、不带格式的一行文本。其中,类JPasswordField是类JTextField的子类,用于输入口令,它与类JTextField的区别在于:不直接显示用户输入的文字,而显示特定的字符作为掩码(mask)字符。文本字段的使用基本动作事件(即主要监听动作类型的事件ActionEvent),与按钮等简单控件的用法类似。
2.纯文本区域(plain text areas),包括类JTextArea,用于显示和编辑较长的、不带格式的多行文本,通常用于显示没有格式的帮助信息。
3.带样式文本区域(styled text areas),包括类JEditorPane和JTextPane,可用于显示和编辑复杂的、带样式的文本。

package Dedmo01;

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JTextField;

public class TestTextDemo01 extends JFrame {
public TestTextDemo01() {
Container container=this.getContentPane();
JTextField textfield=new JTextField(“hi”);
JTextField textfield2=new JTextField(“彭于晏”);
container.add(textfield,BorderLayout.WEST);
container.add(textfield2,BorderLayout.EAST);

	this.setVisible(true);
	this.setSize(500,300);
	this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	
}
 public static void main(String[] args) {
new TestTextDemo01();

}

}
package Dedmo01;

import java.awt.*;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class TestTextDemo2 extends JFrame {
public TestTextDemo2() {
Container container=this.getContentPane();
JPasswordField passwordField= new JPasswordField();
passwordField.setEchoChar(’~’);

	container.add(passwordField);
	
	
	this.setVisible(true);
	this.setSize(500,300);
	this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	
}
 public static void main(String[] args) {
new TestTextDemo2();

}

}

二、事件

1.ActionEvent类事件

ActionEvent类监听器的监听接口ActionListener有
一个抽象方法:
• public void actionPerformed(ActionEvent ae);
在文本框、密码框中输入内容之后按回车键,
或者单击按钮时,会触发ActionEvent事件
这个事件对象将获取的信息传给监听器,监听器
package Demo02;

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

import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class TextActionEvent {
public static void main(String[] args) {
JFrame frame =new JFrame();
frame.setSize(400,400);
frame.locate(400, 300);
MyActionListener myActionListener=new MyActionListener();
Button button =new Button();
button.addActionListener(myActionListener);
frame.add(button);
frame.add(button,BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

}

}
class MyActionListener implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {

	System.out.println("2005");
}

}

package Demo02;

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

import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class TextActionEvent2 {
public static void main(String[] args) {
JFrame frame =new JFrame(“开始–停止”);
frame.setSize(400,400);
frame.locate(400, 300);
Button button1 =new Button(“start”);
Button button2 =new Button(“stop”);

	MyMonitor myMonitor= new MyMonitor();
	button1.addActionListener(myMonitor);
	button2.addActionListener(myMonitor);

	frame.add(button1,BorderLayout.WEST);
	frame.add(button2,BorderLayout.SOUTH);
	frame.pack();
	frame.setVisible(true);
	frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	
}

}
class MyMonitor implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
	// TODO 自动生成的方法存根
	//System.out.println(e.getActionCommand("大数据2005"+e.getActionCommand()));
	if(e.getActionCommand().equals("start")) {
		System.out.println("我要学习了");
	}else {
		System.out.println("我要休息了");
	}
}

}
package Demo02;

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

import javax.swing.JFrame;

public class TextText01 {
public static void main(String[] args) {
new Myframe();
}

}
class Myframe extends JFrame{
public Myframe() {
TextField textField =new TextField();
this.add(textField);
MyActionListener2 myActionListener2 =new MyActionListener2();
textField.addActionListener(myActionListener2);
textField.setEchoChar(’$’);
this.setVisible(true);
this.pack();
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
class MyActionListener2 implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
	TextField field=(TextField)e.getSource();
	System.out.println(field.getText());
	field.setText("");
}

}

2.键盘事件

按键事件可以利用键盘来控制和执行一些动作,或者从键盘上获取输入,只要按下,释放一个键或者在一个组件上敲击,就会触发按键事件。KeyEvent对象描述事件的特性(按下,放开,或者敲击一个键)和对应的值。java提供KeyListener接口处理按键事件。

package Demo03;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;

public class TestKeyListener {
public static void main(String[] args) {
new KeyFrame();
}

}
class KeyFrame extends JFrame{
public KeyFrame() {
this.setBounds(10,10,330,410);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.addKeyListener(
new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
// TODO 自动生成的方法存根
int keycode=e.getKeyCode();
// System.out.println(keycode);
if(keycodeKeyEvent.VK_UP) {
System.out.println(“你按下了上箭头”);
}
if(keycode
KeyEvent.VK_W) {
System.out.println(“你按下了W”);
}

				}
	
		
		
	});
}

}
在这里插入图片描述

WindowEvent

WindowEvent:用户对窗口操作所操作产生的事件

package Demo03;

import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.JFrame;

public class TestWindos {
public static void main(String[] args) {
new WindowFrame();
}

}
class WindowFrame extends JFrame{
public WindowFrame() {
this.setBackground(Color.orange);
this.setBounds(120,120,500,500);
this.setVisible(true);
//this.setDefaultCloseOperation(EXIT_ON_CLOSE);
//this.addWindowListener(new WindowListener());
this.addWindowListener(
//匿名内部类
new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// TODO 自动生成的方法存根
super.windowClosing(e);
setVisible(false);

					System.out.println("我要关闭");
					
				}
				@Override
				public void windowActivated(WindowEvent e) {
					// TODO 自动生成的方法存根
					super.windowActivated(e);
					System.out.println("windowActivated");
				}
				@Override
				public void windowClosed(WindowEvent e) {
					// TODO 自动生成的方法存根
					super.windowClosed(e);
					System.out.println("windowClosed");
				}
				@Override
				public void windowOpened(WindowEvent e) {
					// TODO 自动生成的方法存根
					super.windowOpened(e);
					System.out.println("windowOpened");
				}
			}
			);
}

// class MyWinowListener extends WindowAdapter{
//@Override
//public void windowActivated(WindowEvent e) {
// TODO 自动生成的方法存根
//super.windowActivated(e);
//setVisble(false);
//System.out.println(“关闭”);
//System.exit(0);
//}

}

//}

鼠标事件

MouseEvent:用户对鼠标操作所产生的事件
当鼠标进行某种操作时,就会生成一个event对象,该对象记录着鼠标触发事件时的所有属性。
package Demo03;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.JFrame;

public class TextMouseListener {
public static void main(String[] args) {
new MyFrame(“我的画图”);
}

}
class MyFrame extends JFrame{
ArrayList points;
public MyFrame(String title) {
super(title);
this.setBounds(200,200,410,410);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
points=new ArrayList<>();
this.addMouseListener(new MyMouseListener());
}

public void paint(Graphics g) {
Iterator iterator=points.iterator();
while(iterator.hasNext()) {
Point point=(Point)iterator.next();
g.setColor(Color.cyan);
g.fillOval(point.x, point.y,10,10);

}

}

public void addPaint(Point point) {
	points.add(point);
}
private class MyMouseListener extends MouseAdapter{
	
	@Override
	public void mousePressed(MouseEvent e) {
		MyFrame myFrame=(MyFrame) e.getSource();
		System.out.println("x坐标: "+e.getX()+"y坐标: "+e.getY());
		myFrame.addPaint(new Point(e.getX(),e.getY()));
		myFrame.repaint();
	}
	
}

}
在这里插入图片描述

总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值