Experiência 4 Interface gráfica do usuário e manipulação de eventos


1. O objetivo do experimento

  1. Domine os componentes básicos da interface gráfica do usuário
  2. Domine os principais contêineres e o layout da interface gráfica do usuário
  3. Familiarizado com o modelo de processamento de eventos da interface gráfica
  4. Capaz de realizar design de interface simples e resposta a incidentes

2. Conteúdo experimental

1 Crie uma janela, quando o mouse clica na janela, as coordenadas da posição do clique são exibidas na barra de título da janela. Como mostrado:

Insira a descrição da imagem aqui

2 Escreva um programa para implementar a seguinte interface (quando o nome de usuário e a senha são inseridos como 000 e 111, respectivamente, "Bem-vindo, 000" é exibido no canto inferior direito):

Insira a descrição da imagem aqui

提示:
1) A operação do botão pelo usuário acionará o evento ActionEvent, que precisa ser tratado pela classe que implementa a interface ActionListener; a operação do botão Fechar do frame pelo usuário acionará o evento WindowEvent, que precisa ser realizado pela classe que implementa a interface WindowListener Lide com. (Você também pode usar adaptadores ou classes internas anônimas para lidar com eventos)


2) Layout com GridLayout


3) Retornar (retornar) caracteres na caixa de senha. Se a interface usar um componente awt, use o método setEchoChar de TextField para definir; se ele usar um componente swing, use JPasswordField (uma caixa de texto leve) e setEchoChar diretamente Configurações de método em vez de usar JTextField. Veja JDK API


4) A janela deve ser exibida no tamanho apropriado normalmente, preste atenção ao uso de setVisible, pack, setSize e outros métodos, e consulte a API JDK.


5) Concluído em etapas, primeiro projete a interface, defina a janela e os elementos internos, crie e exiba a interface e, em seguida, preencha o tratamento correto do evento.


problema:

Considerando que o usuário acidentalmente insere um espaço antes ou depois da entrada, como a string "111" obtida na caixa de texto, e ainda acredita que a entrada está correta, o que devo fazer no programa?

3. Análise experimental, código e resultados operacionais

1)

import java.awt.event.*;
import javax.swing.JFrame;
public class Work{
    
    
	public Work() {
    
    
		JFrame jf = new JFrame("jf");
		// 添加鼠标监听
		jf.addMouseListener(new MouseAdapter() {
    
    
			public void mouseClicked(MouseEvent e) {
    
    
				System.out.println(e.getX()+","+e.getY());
				jf.setTitle("("+ e.getX()+","+e.getY()+")");
			}
		});
		
		// 设置窗口默认关闭事件
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setSize(500,200);
		jf.setVisible(true);
		
	}
	
	public static void main(String[] args) {
    
    
		Work w1 = new Work();
	}
}

resultado da operação:

Insira a descrição da imagem aqui

análise:

Adicione o evento de clique do mouse ao ouvinte e implemente o método mouseClicked, que é acionado quando a janela é clicada. O método setTitle do objeto JFrame é usado para definir o conteúdo do título
e os métodos getX e getY do objeto de evento e são usados ​​para obter as coordenadas de clique.

2)

import java.awt.Button;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/**
 * 窗口界面
 * @author sweetheart
 *
 */

public class Work01 {
    
    

	public static void main(String[] args) {
    
    
		
		// 创建顶层容器对象
		JFrame jf = new JFrame("");
		
		// 获取jf对象的面板
		Container con = jf.getContentPane();
		
		// 设置网格分布
		con.setLayout(new GridLayout(0,2));
		
		// 创建组件对象添加到顶层容器中
		JLabel L1 = new JLabel("请输入用户名  ");
		JLabel L2 = new JLabel("请输入密码  ");
		JLabel L3 = new JLabel("");
		JTextField jtf1 = new JTextField();
		JPasswordField jtf2 = new JPasswordField();
		Button bt = new Button("确定");
		
		// 监听鼠标点击按钮bt的事件(适配器、匿名类)
		bt.addMouseListener(new MouseAdapter() {
    
    
			public void mouseClicked(MouseEvent e) {
    
    
				// 实现mouseClicked方法
				// 获取用户名输入框输入的内容并将前后的空格去除
				String user = jtf1.getText().strip();
				// 获取输入的密码
				String pass = jtf2.getText();
				// 检验密码输入是否正确
				if(user.equals("000")&&pass.equals("111")) {
    
    
					L3.setText("欢迎,000");
				}else {
    
    
					L3.setText("用户名或密码错误");
				}
			}
		});
		
		jf.add(L1);
		jf.add(jtf1);
		jf.add(L2);
		jf.add(jtf2);
		jf.add(bt);
		jf.add(L3);
		
		// 添加窗口关闭事件监听器
		jf.addWindowListener(new WindowAdapter() {
    
    
			
			public void windowClosing(WindowEvent e) {
    
    
				System.exit(0);
			}
			
		});
		
//		jf.setSize(300,150);
		jf.setBounds(100,100,400,150);
		jf.setVisible(true);
		
	}
}

resultado da operação:

Insira a descrição da imagem aqui

análise:

Idéias básicas:
1) Criar o objeto recipiente de nível superior
2) Obter o painel do objeto jf
3) Definir a distribuição da grade
4) Criar o objeto componente e adicioná-lo ao recipiente de nível superior
5) Ouvir o evento de clique do botão do mouse bt (adaptador, classe anônima)
6) Implementação método mouseClicked
7) Adicionar um listener de evento de fechamento de janela
8) Definir a janela como visível

Resumindo:

Componentes AWT:

Insira a descrição da imagem aqui

Hierarquia de classes do componente Swing:

Insira a descrição da imagem aqui

Recipientes comuns:

1) Recipiente superior-JFrame
2) Recipiente geral-JPanel

Gerente de layout:

FlowLayout ------ Flow Layout Manager
BorderLayout ----- Border Layout Manager
GridLayout ----- Grid Layout Manager
CardLayout ---- Card Layout Manager
GridBagLayout ---- Grid Pack Gerenciador de layout
BoxLayout ----- gerenciador de layout de caixa

Interfaces comuns (e métodos comuns) para monitoramento de eventos:

ActionListener
---- public void actionPerformed (ActionEvent e)
WindowListener
---- public void windowClosing (WindowEvent e)
MouseListener
---- public void mouseClicked (MouseEvent e)

Coopere com o uso do adaptador (classe anônima)

// Adicionar um ouvinte de evento de fechamento de janela
jf.addWindowListener (new WindowAdapter () { public void windowClosing (WindowEvent e) { System.exit (0); } });



Acho que você gosta

Origin blog.csdn.net/qq_46456049/article/details/109240847
Recomendado
Clasificación