Artigo Diretório
1. O objetivo do experimento
- Domine os componentes básicos da interface gráfica do usuário
- Domine os principais contêineres e o layout da interface gráfica do usuário
- Familiarizado com o modelo de processamento de eventos da interface gráfica
- 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:
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):
提示:
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:
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:
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:
Hierarquia de classes do componente Swing:
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); } });