Swing入门之简单文本编辑器

使用Java开发窗口应用程序有两种选择:
1.AWT: Abstract Window Toolkit
2.JFC: Java Foundation Classes / Swing

本文主要介绍Swing设计基本要素:
容器,组件,版面管理员,事件与监听器等基本概念
要了解Swing必须了解Swing继承架构,Swing是基于AWT而创建,因此要了解Swing继承架构必须先了解AWT继承架构

一.AWT继承架构

AWT提供基本的GUI组件,用在所有的Java applets及应用程序中。

具有可扩展的超类,它们的属性是继承的。
确保显示在屏幕上的每个GUI组件都是抽象类组件的子类。
GUI组件根据作用可以分为两种:基本组件和容器组件
基本组件又称构件,诸如按钮、文本框之类的图形界面元素。
容器是一种比较特殊的组件,可以容纳其他组件,容器如窗口、对话框等。
所有的容器类都是java.awt.Container的直接或间接子类
Container,它是Component的一个子类,而且包括两个主要子类:Panel,Window。

  注:容器不但能容纳组件,还能容纳其他容器,这一事实对于建立复杂的布局是关键的,也是基本的。
这里写图片描述

各种组件的父类:
java.awt.Component 或
java.awt.MenuComponent

Component: 英 [kəmˈpəʊnənt] 美 [kəmˈpoʊnənt]
n. 成分; 组分; 零件; [数] 要素;
adj. 成分的; 组成的; 合成的; 构成的;

Component的子类:

Button, Label, TextComponent

MenuBar, MenuItem

容器: Container

是Component的重要子类
其实例可以容纳其他Component,因而可递归组合为复杂的窗口画面.

Container主要有两个子类:

Window:
Window包括两个重要子类:
(1)Frame: 有标题栏,工具栏且可改变大小的窗口组件
(2)Dialog: 可显示简单的对话框,没有工具栏,不能改变大小

Panel:
(1)容纳于Container
(2)嵌入浏览器&在其中可以放入组件或其他Container

在AWT中,主要就是使用Window+Dialog+Panel来进行窗口组件组合

二.Swing继承框架

Swing以AWT为基础,功能繁多,且开发出来的窗口组件在不同平台会有一致观感

重要概念:

Swing所有了组件都是Container的子类实例

这里写图片描述

基本元素(1) JFrame

可独立显示,不用加入其他容器

例子:

import javax.swing.*;

/**
 * Created by butter on 16-11-21.
 */
public class JNotePad extends JFrame {
   
    public JNotePad(){
        initComponents();//初始组件外观
        //initEventListeners();//初始化组件事件倾听器
    }

    private void initEventListeners() {
  //事件处理
        //设置按左(右)上角X按钮默认行为:关闭窗口,其实这个是默认的,不需要手动设置
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    private void initComponents() {
  //窗口组件设置
        setTitle("新增纯文本文档");//设置窗口标题
        setSize(1000, 700);//设置窗口宽高
    }

    public static void main(String[] args) {
        //将建立的JNotePad实例与SetVisible()的动作排入事件队列

        //这玩意应该是一个Runnable接口的实现
        SwingUtilities.invokeLater( ()->{
            new JNotePad().setVisible(true);
        });
    }
}

窗口上发生任何事件 : 键盘操作,鼠标点击/选中, 大小改变等
都会产生事件:Event
若对某些事件感兴趣(事件发生后想要实现相应该功能),可以对组件注册监听器(Listener),每个窗口程序都有一个事件队列,若有事件发生,都会被安排到这个队列,窗口程序会使用一条线程来处理队列中的事件,调用已注册监听器中的方法.

编辑器代码:

import jdk.nashorn.internal.scripts.JO;

import javax.swing.*;
import javax.xml.soap.Text;
import java.awt.*;
import java.awt.event.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * Created by butter on 16-11-21.
 */


/**
 *
 * swing开发基本步骤:
 * (1)继承JFrame
 * (2)定义需要的组件
 * (3)创建组件
 * (4)添加组件
 * (5)对(顶层)窗体设置
 * (6)设置显示
 */

public class JNotePad_demo2 extends JFrame{
   


    
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值