Java程序员_编程开发学习笔记_网站安全运维教程_渗透技术教程

Java Swing 对话框交互实战解析:登录信息对话框的实现

阿贵
昨天发布 /正在检测是否收录...
温馨提示:
本文最后更新于2025年08月23日,已超过0天没有更新,若内容或图片失效,请留言反馈。

Java Swing 对话框交互实战解析:登录信息对话框的实现

一、原题完整代码呈现

31.png
32.png

以下是计算机二级Java考试中关于Swing对话框与事件处理的典型题型,主要考察窗口适配器、按钮事件监听和对话框控制,包含4处需要填写的空白(标记为//*********Found**********):

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

//*********Found**********
public class Java_3 __________________ WindowAdapter implements ActionListener
{
   private JFrame frame;
   private JTextField name;
   private JPasswordField pass;
   private JLabel nameLabel;
   private JLabel passLabel;
   private JPanel textPanel;
   private JPanel labelPanel;
   private JButton button;
   private JTextArea textArea;
    
   public void initGUI()
   {
      frame=new JFrame("Frame with Dialog");
      frame.addWindowListener(this);
      button=new JButton("JDialog");
  //*********Found**********
      button._______________(this);
      textArea=new JTextArea("",3,10);
        
      frame.getContentPane().add(textArea,BorderLayout.CENTER);
      frame.getContentPane().add(button,BorderLayout.NORTH);
        
      frame.setSize(400,300);
      frame.setVisible(true);
        
   }
    
   public void actionPerformed(ActionEvent e)
   {
      final JDialog dia=new JDialog(frame,"login information");
      JButton ok=new JButton("ok");
      ok.addActionListener(new ActionListener()
      {
         public void actionPerformed(ActionEvent e)
         {
            textArea.setText("");
            textArea.append("name:"+name.getText()+"\r\n");
            textArea.append("passWord:"+new String(pass.getPassword())+"\r\n");
            //*********Found**********   
            dia.setVisible(________________);    //隐藏对话框
         }
      });
        
      name=new JTextField("",10);
      pass=new JPasswordField("",10);    
      pass.setEchoChar('*');
      textPanel=new JPanel();
      textPanel.setLayout(new GridLayout(2,1,10,10));
      textPanel.add(name);
      textPanel.add(pass);
        
      nameLabel=new JLabel("name");
      passLabel=new JLabel("passWord");
      labelPanel=new JPanel();
      labelPanel.setLayout(new GridLayout(2,1,20,20));
      labelPanel.add(nameLabel);
      labelPanel.add(passLabel);
        
      dia.getContentPane().add(labelPanel,BorderLayout.WEST);
      dia.getContentPane().add(textPanel,BorderLayout.CENTER);        
      dia.getContentPane().add(ok,BorderLayout.SOUTH);
      dia.setSize(200,130);
      dia.setVisible(true);
   }
    
   public void windowClosing(WindowEvent event)
   {
      frame.setVisible(false);
      System.exit(0);
   }
    
   public static void main(String args[])
   {
      Java_3 example=new Java_3();
   //*********Found**********
      example.____________;
   }
}

二、空白处逐一解析与解答

1. 第一处空白:类继承声明

答案:extends

//*********Found**********
public class Java_3 extends WindowAdapter implements ActionListener

解析
WindowAdapter是一个抽象类,提供了窗口事件的空实现方法。通过extends关键字让Java_3类继承WindowAdapter,可以有选择地重写需要的方法(如windowClosing),而无需实现接口的所有方法。同时类还实现了ActionListener接口处理动作事件,Java中类只能单继承但可多实现。

2. 第二处空白:绑定按钮监听器

答案:addActionListener

//*********Found**********
button.addActionListener(this);

解析
JButton需要通过addActionListener()方法绑定事件监听器。当前类实现了ActionListener接口(this指向当前对象),因此将当前对象作为监听器传入,使按钮点击事件能被actionPerformed方法处理。

3. 第三处空白:隐藏对话框

答案:false

//*********Found**********   
dia.setVisible(false);    //隐藏对话框

解析
JDialogsetVisible(boolean b)方法控制对话框的显示状态:true表示显示,false表示隐藏。用户点击"ok"按钮后,需要隐藏对话框,因此传入false

4. 第四处空白:初始化GUI界面

答案:initGUI()

//*********Found**********
example.initGUI();

解析
initGUI()方法是自定义的界面初始化方法,包含创建窗口、添加组件等逻辑。在main方法中创建Java_3实例后,需要调用该方法启动界面,否则程序不会显示任何窗口。

三、完整正确代码

四、程序功能与运行说明

程序功能

该程序实现了一个带有登录对话框的Swing应用,核心功能包括:

  1. 主窗口显示一个"JDialog"按钮和文本区域
  2. 点击按钮弹出登录对话框,包含用户名输入框、密码框(密码显示为*)和"ok"按钮
  3. 在对话框中输入信息并点击"ok"后,信息会显示在主窗口的文本区域,同时对话框隐藏
  4. 关闭主窗口时程序退出
运行说明
  1. 程序启动后,显示标题为"Frame with Dialog"的主窗口,顶部有"JDialog"按钮,中间是文本区域
  2. 点击"JDialog"按钮,弹出标题为"login information"的对话框
  3. 在对话框中:

    • "name"输入框输入用户名(如"admin")
    • "passWord"输入框输入密码(如"123456",会显示为"")
    • 点击"ok"按钮,对话框隐藏,主窗口文本区域显示输入的信息
  4. 点击主窗口的关闭按钮(×),程序正常退出

五、核心知识点总结

  1. 类的继承与接口实现

    • 单继承:通过extends WindowAdapter继承窗口适配器类,简化窗口事件处理
    • 接口实现:implements ActionListener使类具备处理动作事件的能力
    • 组合使用:继承抽象类+实现接口,兼顾代码简洁性和功能完整性
  2. Swing组件与布局

    • 核心容器:JFrame(主窗口)和JDialog(对话框)
    • 输入组件:JTextField(文本输入)、JPasswordField(密码输入,setEchoChar('*')设置显示字符)
    • 布局管理器:BorderLayout(边界布局,分东、南、西、北、中区域)和GridLayout(网格布局,按行分列组织组件)
  3. 事件处理机制

    • 窗口事件:继承WindowAdapter并重写windowClosing方法,处理窗口关闭事件
    • 动作事件:实现ActionListener接口的actionPerformed方法,处理按钮点击事件
    • 匿名监听器:对话框的"ok"按钮使用new ActionListener(){...}创建匿名监听器,简化代码
  4. 对话框控制

    • 创建方式:new JDialog(父窗口, 标题)关联主窗口
    • 显示/隐藏:setVisible(true)显示对话框,setVisible(false)隐藏对话框
    • 数据传递:对话框组件(namepass)的内容通过getText()getPassword()获取并传递到主窗口

六、常见错误与应试技巧

  1. 常见错误分析

    • 第一处空白误用implementsWindowAdapter是抽象类而非接口,必须用extends继承
    • 第二处空白事件绑定错误:写成addActionLister(拼写错误)或参数错误,导致按钮点击无响应
    • 第三处空白传入true:会使对话框保持显示,不符合"隐藏对话框"的需求
    • 第四处空白忘记调用初始化方法:不调用initGUI()会导致界面无法显示
  2. 应试技巧

    • 继承与实现区分:"类用extends,接口用implements"
    • 事件绑定模板:组件.addActionListener(监听器对象)是固定写法
    • 可见性控制:记住setVisible(false)隐藏组件,true显示组件
    • 程序启动流程:main方法中通常需要创建实例并调用初始化方法(如initGUI()

通过本题,我们掌握了Swing中对话框与主窗口的交互方式、事件监听器的多重应用以及布局管理器的使用。这类知识点在实际开发中广泛应用于用户登录、信息输入等场景,是Java桌面应用开发的基础,也是计算机二级Java考试中GUI部分的重点考察内容。

喜欢就支持一下吧
点赞 0 分享 收藏
评论 抢沙发
OωO
取消 登录评论