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

Java Swing 窗口与面板实战:自定义绘制文本界面全解析

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

Java Swing 窗口与面板实战:自定义绘制文本界面全解析

102.png

一、原题完整代码呈现

以下是计算机二级Java考试中关于Swing窗口、面板及自定义绘制的典型题型,主要考察窗口关闭策略、类继承关系、窗口大小设置及面板基类,包含4处需要填写的空白(标记为//*********Found**********):

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

public class Java_2{
  public static void main(String[] args){
    WelcomFrame frame = new WelcomFrame();
//*********Found**********
    frame.setDefaultCloseOperation(JFrame._____________________ );
    frame.setVisible(true);
  }
}
//*********Found**********
class WelcomFrame extends ___________________{
  public WelcomFrame(){
    setTitle("Java等级考试");
//*********Found**********
    ___________________(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    WelcomPanel panel = new WelcomPanel();
    Container contentPane = getContentPane();
    contentPane.add(panel);
  }
  public static final int DEFAULT_WIDTH = 250;
  public static final int DEFAULT_HEIGHT = 100;
}
//*********Found**********
class WelcomPanel extends ___________________{
  public void paintComponent(Graphics g){
    super.paintComponent(g);
    g.drawString("欢迎参加Java等级考试!",MESSAGE_X, MESSAGE_Y);
  }
  public static final int MESSAGE_X = 60;
  public static final int MESSAGE_Y = 50;
}

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

1. 第一处空白:窗口关闭操作的常量

答案:EXIT_ON_CLOSE

//*********Found**********
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );

解析
setDefaultCloseOperation方法用于设置窗口关闭按钮的行为,JFrame.EXIT_ON_CLOSE是标准常量,表示点击关闭按钮时终止程序(退出JVM)。若不设置此值,窗口关闭后程序可能仍在后台运行,因此填写EXIT_ON_CLOSE

2. 第二处空白:WelcomFrame继承的父类

答案:JFrame

//*********Found**********
class WelcomFrame extends JFrame{

解析
WelcomFrame是程序的主窗口,需要具备窗口的核心功能(如设置标题、大小、添加组件等)。JFrame是Swing的顶级窗口容器,提供这些基础功能,因此自定义窗口类需继承JFrame,填写此类名。

3. 第三处空白:设置窗口大小的方法

答案:setSize

//*********Found**********
    setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

解析
DEFAULT_WIDTHDEFAULT_HEIGHT分别定义了窗口的宽和高(250×100像素),setSize(int width, int height)JFrame的方法,用于设置窗口大小,因此填写setSize

4. 第四处空白:WelcomPanel继承的父类

答案:JPanel

//*********Found**********
class WelcomPanel extends JPanel{

解析
WelcomPanel需要重写paintComponent方法实现自定义绘制(绘制文本“欢迎参加Java等级考试!”),JPanel是Swing的面板容器,支持自定义绘制(通过重写paintComponent),因此填写JPanel

三、完整正确代码

四、程序功能与运行说明

程序功能

该程序是一个简单的Swing窗口应用,通过自定义面板实现文本绘制,核心功能包括:

  1. 创建主窗口(WelcomFrame),标题为“Java等级考试”,大小250×100像素
  2. 窗口中添加自定义面板(WelcomPanel),面板通过重写paintComponent方法绘制文本
  3. 文本“欢迎参加Java等级考试!”显示在面板的指定位置(X=60,Y=50)
  4. 点击窗口关闭按钮时,程序正常退出
运行说明
  1. 程序启动:main方法创建WelcomFrame实例,设置窗口关闭策略为EXIT_ON_CLOSE,并通过setVisible(true)使窗口可见
  2. 窗口初始化:WelcomFrame构造方法中设置标题、大小,创建WelcomPanel并添加到窗口的内容面板
  3. 文本绘制:WelcomPanelpaintComponent方法在面板上绘制文本,super.paintComponent(g)确保面板背景等基础绘制正常执行
  4. 显示效果:窗口大小250×100像素,中央偏上位置显示“欢迎参加Java等级考试!”文本

五、核心知识点总结

  1. JFrame窗口基础

    • 类继承:自定义窗口类需继承JFrame,以获得窗口的标题、大小、关闭等核心功能
    • 关闭策略:setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)是最常用的关闭策略,确保窗口关闭时程序终止
    • 大小设置:setSize(width, height)用于定义窗口初始尺寸,常量DEFAULT_WIDTHDEFAULT_HEIGHT使代码更易维护
  2. JPanel面板与自定义绘制

    • 面板作用:JPanel作为容器用于组织组件,也可通过重写paintComponent实现自定义绘制(如文本、图形)
    • 绘制方法:paintComponent(Graphics g)是绘制的核心方法,参数Graphics提供绘图工具(如drawString绘制文本)
    • 父类调用:super.paintComponent(g)必须在方法开头调用,用于清除面板原有内容、绘制背景等,避免绘制残留
  3. 组件层次结构

    • 窗口(JFrame)→ 内容面板(ContentPane)→ 自定义面板(WelcomPanel):形成组件嵌套关系
    • 添加逻辑:contentPane.add(panel)将面板添加到窗口,面板中的绘制内容才会在窗口中显示
  4. 坐标系统

    • 绘制文本的drawString方法参数(MESSAGE_X, MESSAGE_Y):X为水平坐标(从左到右),Y为垂直坐标(从上到下)
    • 本例中MESSAGE_X=60MESSAGE_Y=50:使文本在250×100的窗口中大致居中显示

六、常见错误与应试技巧

  1. 常见错误分析

    • 第一处空白关闭策略错误:写成EXIT(常量名错误,正确为EXIT_ON_CLOSE)或DISPOSE_ON_CLOSE(仅关闭窗口,不终止程序)
    • 第二处空白父类错误:写成Frame(AWT的窗口类,非Swing的JFrame,缺少Swing特性)或JPanel(面板不能作为顶级窗口)
    • 第三处空白方法错误:写成setSize的拼写错误(如setSise)或setBounds(需4个参数,此处仅2个参数)
    • 第四处空白面板父类错误:写成Component(抽象类,不适合直接继承)或JComponent(虽为父类,但JPanel是更常用的面板类)
  2. 应试技巧

    • 窗口关闭:“窗口关闭要退出,EXIT_ON_CLOSE来帮助,JFrame类里的常量,setDefaultCloseOperation传进去”
    • 类继承:“窗口继承JFrame,面板继承JPanel,各司其职有分工,窗口装面板,面板绘内容”
    • 大小设置:“窗口大小setSize,宽高参数传进去,常量定义更规范,修改只需改一处”
    • 自定义绘制:“paintComponent重写它,绘图逻辑里面加,先调super别忘记,清除背景靠它啦”

通过本题,我们掌握了Swing中窗口与面板的继承关系、窗口关闭策略、大小设置及自定义绘制的核心逻辑。这类题型是“容器-组件-绘制”模式的基础案例,对理解Java GUI的组件层次和绘制机制具有重要意义。

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