学习java第二十八天
文本框
package demo01;
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class TestText extends JFrame{
public TestText() {
Container container=this.getContentPane();
JTextField textfield=new JTextField("Hello world");
JTextField textfield2=new JTextField("大数据五班");
container.add(textfield,BorderLayout.NORTH);
container.add(textfield2,BorderLayout.SOUTH);
this.setVisible(true);
this.setSize(500,350);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestText();
}
}
密码框
package Demo01;
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JPasswordField;
public class TestTextDemo02 extends JFrame{
public TestTextDemo02() {
Container container =this.getContentPane();
JPasswordField passwordField = new JPasswordField();
passwordField.setEchoChar('*');
container.add(passwordField);
this.setVisible(true);
this.setSize(500,350);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestTextDemo02();
}
}
事件的类型和处理方法
AWT和Swing定义了多种类型的事件,这些事件大致可分为以下两大类型。
(1)低级事件。
这类事件指由窗口系统发生的事件或者底层输入而产生的事件,主要包括组件事件(跟踪组件位置、大小可见性的变化)、容器事件(反应容器中组件的添加和删除)、焦点事件(组件获得或失去键盘焦点,拥有键盘的组件可响应键盘的输入)、窗口事件(反映窗口或对话框的基本状态)、鼠标事件(用户使用鼠标进行交互)、键盘事件(用户使用键盘进行输入)等。
(2)语义事件。
这类事件是指低级事件以外的具有丰富含义的与组件有关的事件,如单击按钮、滚拖动滚动条等。这些世界源于图形用户界面,其含义由程序设计员赋予,如单击“确定”按钮将确认刚才的操作。按“取消”按钮将撤销刚才的操作。
(1)低级事件
FocusEvent: 在组件获得焦点或失去焦点时产生的事件。
MouseEvent: 用户对鼠标操作所产生的事件。
KeyEvent: 用户对键盘操作所产生的事件。
WindowEvent用户对窗口操作所产生的事件。
(2)语义事件
ActionEvent激活组件事件。
ItemEvent: 选项事件。
AdjustmentEvent : 调节事件。
ComponentEvent : 组建事件。
ContainerEvent : 窗口事件。
TextEvent : 文本框事件。
与低级事件一样,每一种语义事件都对应一个监听器接口,这些监听器接口同样是EventListener接口的子接口。
(3)键盘事件的处理
键盘操作可分为三类,用不同的ID标识,当发生键盘事件时,需要给出事件的标识KEY_EVENT_MASK及对应的事件ID。这三类事件的ID及事件描述如下:
①KEY_PRESSED: 当按下键盘中的某个键时发生该事件。
②KEY_RELEASED: 当释放按键时发生该事件。
③KEY_TYPED: 当按下键盘中的字符键(非系统键)时发生该事件。
处理键盘事件的监听器接口是KeyListener接口。在这个接口中,声明了对应上述3种事件的成员方法。
①KeyPressed(KeyEvent) ,用于处理KEY_ PRESSED事件。
②KeyReleased( KeyEvent),用于处理KEY_ RELEASE事件。
③KeyTyped(KeyEvent),用于处理KEY TYPED事件。
(4)鼠标事件的处理
鼠标事件由MouseEvent类描述。在这个类中,提供了下面几个可以获得鼠标信息的成员方法。
①int getX()和int getY(),返回发生鼠标事件时光标所处的坐标位置。
②Point getPoint(),以Point类型的形式返回发生鼠标事件时光标所处的位置。
③int getClickCount(),返回单击鼠标的次数。
与键盘事件不同,鼠标事件分为两类:一类是鼠标事件,用MOUSE_ EVENT MASK标识;另一类是鼠标移动事件,用MOUSE_ MOTION_ EVENT_ MASK标识。它们分别对应MouseListener接口和MouseMotionListener接口。下面列出了这两类鼠标事件所包含的且体事件ID及描述。
①COMOUSE_CHICKED, 当单击鼠标时发生该事件。
②MOUSF_PRESSDS当按下鼠标时发生该事件。
③MOUSE_ENTERED当鼠标指针进入组件显示区域是发生该事件。
④MOUSE_EXITED:当鼠标指针退出组件显示区域时发生该事件。
⑤MOUSE_RELEASED:当释放鼠标时发生该事件。
⑥MOUSE_MOVE:当移动鼠标时发生该事件。
⑦MOUSE_DRAGGED:当拖动鼠标时发生该事件。
其中,最后两个ID属于MOUSE MOTION EVENT MASK事件类别。
在Mouselistener 接口中声明了5个成员方法,对应处理属于MOUSER EVENTMASK事件类别的5个不同的事件。
①mouseClicked( MouseEvent) :用于处理MOUSE CLICKED事件。
②mousePressed( MouseEvent):用于处理MOUSE PRESSED 事件。
③mouseReleased( MouseEvent) :用于处理MOUSE_ RELEASED事件。
④mouseEntered( MouseEvent):用于处理MOUSE_ ENTERED事件。
⑤mouseExited( MouseEvent) :用于处理MOUSE EXITED 事件。
在MouseMotionListener接口中声明了两个处理MOUSE MOTION EVENT _MASK事件的成员方法。
①mouseMove( MouseEvent):用于处理MOUSE MOVE事件。
②mouseDraged(MouseEven)用于处理MOUSE DRAGED事件。
package com.hg.day28.demo02;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TextActionEvent {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(400,400);
frame.locate(400,300);
MyActionListener myListener = new MyActionListener();
Button button= new Button();
button.addActionListener(myListener);
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("大数据五班");
}
}
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 TextAtionTwo {
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("stop")) {
System.out.println("我要学习了");
}else {
System.out.println("我要休息了");
}
}
}
文本域
package com.hg.day28.demo02;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
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("");
}
}
键盘监听
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(keycode==KeyEvent.VK_UP) {
System.out.println("你按下了上箭头");
}
if(keycode==KeyEvent.VK_W) {
System.out.println("你按下了W");
}
}
});
}
}
窗口
package Demo03;
import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
public class TestWindow {
public static void main(String[] args) {
new WindowFrame();
}
}
class WindowFrame extends JFrame{
public WindowFrame() {
this.setBackground(Color.cyan);
this.setBounds(166, 200, 300, 400);
this.setVisible(true);
//this.setDefaultCloseOperation(EXIT_ON_CLOSE);
//this.addWindowListener(new MyWindowListener());//匿名类
this.addWindowListener(
new WindowAdapter() {
//匿名内部类
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
setVisible(false);//设置不可见
System.out.println("我要关闭");
//System.exit(0);
}
@Override
public void windowActivated(WindowEvent e) {
super.windowActivated(e);
System.out.println("windowActivated");
}
@Override
public void windowClosed(WindowEvent e) {
super.windowClosed(e);
System.out.println("windowClosed");
}
@Override
public void windowOpened(WindowEvent e) {
super.windowOpened(e);
System.out.println("windowOpened");
}
}
);
}
}
/*
class MyWindowListener extends WindowAdapter{
// 按住alt+/
@Override
public void windowClosing(WindowEvent e) {
// TODO 自动生成的方法存根
super.windowClosing(e);
setVisible(false);//设置不可见
System.out.println("我要关闭");
System.exit(0);
}
}
*/
鼠标监听
package com.hg.day28.demo03;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;
//鼠标监听
public class TestMouseListener {
public static void main(String[] args) {
new MyFrame("我的画图");
}
}
class MyFrame extends JFrame{
ArrayList points;
public MyFrame(String title){
super(title);
this.setBounds(200,200,400,400);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
points= new ArrayList<>();
this.addMouseListener(new MyMouseListener());
}
@Override
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();
}
}
}