我正在执行此程序,此框架会注册新用户。
我想要的是能够用信息填写每个文本字段,然后按下" Cadastrar"键(" Cadastrar" ="注册"),不仅使用鼠标,还使用"输入"键。
我尝试使用keyListener,但结果却让我感到困惑。 这是代码:
package grafico;
public class TelaDeCadastro extends JFrame {
private TextField campoConfirmaSenha;
private TextField campoNome;
private TextField campoEmail;
private TextField campoSenha;
private TextField dicaDeSenha;
public static void main(String[] args) {
public TelaDeCadastro() {
setResizable(false);
setIconImage(Toolkit.getDefaultToolkit().getImage(
TelaDeCadastro.class.getResource("/Files/CashLog.png")));
setTitle("Cadastro");
setPreferredSize(new Dimension(400, 300));
setLocationRelativeTo(null);
JButton botaoCadastrar = new JButton("Cadastrar");
botaoCadastrar.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
}
}
});
botaoCadastrar.setBounds(139, 196, 115, 35);
JButton botaoVoltar = new JButton("Voltar");
botaoVoltar.setBounds(10, 231, 90, 30);
JButton botaoSair = new JButton("Sair");
botaoSair.setBounds(294, 231, 90, 30);
ButtonGroup botoesRetorno = new ButtonGroup();
botoesRetorno.add(botaoSair);
botoesRetorno.add(botaoVoltar);
// botão para submeter as informações passadas
botaoCadastrar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
});
// botão sair fecha o programa
botaoSair.addActionListener(new ActionListener() {
// botão voltar retorna para a tela de login
botaoVoltar.addActionListener(new ActionListener() {
JPanel container = new JPanel();
container.setLayout(null);
dicaDeSenha = new TextField();
dicaDeSenha.setBounds(109, 159, 265, 22);
container.add(dicaDeSenha);
campoConfirmaSenha = new TextField();
campoConfirmaSenha.setEchoChar('*');
campoConfirmaSenha.setBounds(138, 126, 236, 23);
container.add(campoConfirmaSenha);
campoSenha = new TextField();
campoSenha.setEchoChar('*');
campoSenha.setBounds(109, 93, 265, 23);
container.add(campoSenha);
campoEmail = new TextField();
campoEmail.setBounds(109, 62, 265, 23);
container.add(campoEmail);
campoNome = new TextField();
campoNome.setBounds(109, 31, 265, 23);
container.add(campoNome);
JLabel labelNome = new javax.swing.JLabel("Seu nome:");
labelNome.setBounds(10, 35, 364, 14);
container.add(labelNome);
JLabel labelEmail = new javax.swing.JLabel("Seu Email:");
labelEmail.setBounds(10, 66, 364, 14);
container.add(labelEmail);
JLabel labelSenha = new javax.swing.JLabel("Sua senha:");
labelSenha.setBounds(10, 95, 364, 14);
container.add(labelSenha);
JLabel lblConfirmarSenha = new JLabel("Confirmar senha:");
lblConfirmarSenha.setBounds(10, 126, 122, 15);
container.add(lblConfirmarSenha);
JLabel lblDicaDaSenha = new JLabel("Dica da senha:");
lblDicaDaSenha.setBounds(10, 162, 90, 14);
container.add(lblDicaDaSenha);
container.add(botaoCadastrar);
container.add(botaoVoltar);
container.add(botaoSair);
getContentPane().add(container);
JLabel lblCadastrese = new JLabel("Cadastre-se:");
lblCadastrese.setHorizontalAlignment(SwingConstants.CENTER);
lblCadastrese.setHorizontalTextPosition(SwingConstants.CENTER);
lblCadastrese.setBounds(10, 9, 364, 14);
container.add(lblCadastrese);
JLabel label = new JLabel("");
label.setIcon(new ImageIcon(TelaDeCadastro.class
.getResource("/Files/conta-sem-tarifa.jpg")));
label.setBounds(0, 0, 400, 300);
container.add(label);
pack();
}
public TextField getCampoConfirmaSenha() {
public TextField getCampoNome() {
public TextField getCampoEmail() {
public TextField getCampoSenha() {
public TextField getDicaDeSenha() {
}
答案 0 :(得分:1)
请勿使用KeyListener
(或MouseListener
}按钮。
按钮由ActionListener
API支持,该API处理 Enter , Space ,其他平台特定的激活键击,自动鼠标左键单击和助记符。
请查看How to Use Buttons, Check Boxes, and Radio Buttons和How to Write an Action Listener了解详情。
您还应该查看How to Use Root Panes,因为JRootPane
允许您定义“默认”按钮,当用户按下“激活”键击时,该按钮将被激活。请注意,如果具有焦点的组件消耗该事件,则它不会激活该按钮
一般来说,您应该尽可能避免使用KeyListener
并反而支持key bindings API