Swing入门之简单文本编辑器

Swing学习25:Java Swing文本编辑器的实现 最简单的文本编辑器要数 Windows 的记事本了。在学习了本章知识之后,本次案例将完成一个简单的文本编辑器程序。它可以打开文本文件,并输出文本文件的位置和内容。其中用到了菜单、工具栏以及选项卡等组件,是一个综合类的应用,主要实现步骤如下。 (1) 创建一个 TextFileOpener 类并继承 JFrame 父类。 import java.awt.BorderLayout; import ja... 阅读详情

使用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{


    private JMenuBar        menuBar;

    private JMenu fileMenu;
        private JMenuItem       menuOpen;
        private JMenuItem       menuSave;
        private JMenuItem       menuSaveAs;
        private JMenuItem       menuClose;

    private JMenu editMenu;
        private JMenuItem       menuCut;
        private JMenuItem       menuCopy;
        private JMenuItem       menuPast;

    private JMenu aboutMenu;
        private JMenuItem       menuAbout;

    private JTextArea textArea;//输入区域
    private JLabel    stateBar;//状态条

    private TextDAO textDAO;//保存
    private JFileChooser fileChooser;//文件选择器
    private JPopupMenu popUpMeue; //鼠标点击Menu事件



    public JNotePad_demo2(){
        initComponents();//初始组件外观
        initEventListeners();//初始化组件事件倾听器
    }

    private void initComponents(){
        setTitle("新增纯文本文档");
        setSize(400, 300);
        initMenu();
        initTextArea();
        initStateBar();
        popUpMeue = editMenu.getPopupMenu();
        fileChooser = new JFileChooser();
    }


/*----------------初始化Menu---------------------*/
    private void initMenu() {
    initFileMenu();
    initEditMenu();
    initAboutMenu();
    initMenuBar();
}
    private void initMenuBar() {
        //构造菜单列
        menuBar = new JMenuBar();
        menuBar.add(fileMenu);
        menuBar.add(editMenu);
        menuBar.add(aboutMenu);

        //设置菜单列
        setJMenuBar(menuBar);
    }
    private void initAboutMenu() {
        aboutMenu = new JMenu("关于");
        menuAbout = new JMenuItem("关于JNotePad");

        aboutMenu.add(menuAbout);
    }
    private void initEditMenu() {
        editMenu = new JMenu("编辑");
        menuCut  = new JMenuItem("剪切");
        menuCopy = new JMenuItem("复制");
        menuPast = new JMenuItem("粘贴");

        editMenu.add(menuCut);
        editMenu.add(menuCopy);
        editMenu.add(menuPast);
    }
    private void initFileMenu() {
        fileMenu = new JMenu("文件");

        menuOpen   = new JMenuItem("打开");
        menuSave   = new JMenuItem("保存");
        menuSaveAs = new JMenuItem("另存为");
        menuClose  = new JMenuItem("关闭");

        fileMenu.add(menuOpen);
        fileMenu.addSeparator(); //分割线;
        fileMenu.add(menuSave);
        fileMenu.add(menuSaveAs);
        fileMenu.addSeparator(); //分割线;
        fileMenu.add(menuClose);
    }
/*-----------------------------------------------*/

    //初始化事件监视器
    private void initEventListeners(){
        //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);设置点X关闭
        initAccelerator();
        //下面要设置,点X提示"文档已改变,是否保存"

        //按下窗口关闭按钮事件处理:
        addWindowListener(
                new WindowAdapter() {
                    public void windowClosing(WindowEvent event){
                        closeWindow(event);
                    }
                }
        );

        initMenuListener();//初始化菜单的点击事件

        //编辑区键盘事件:
        textArea.addKeyListener(
                new KeyAdapter() {
                    public void keyTyped(KeyEvent event){
                        jtexAreaActionPerformed(event);
                    }
                }
        );

        //编辑区鼠标事件:
        textArea.addMouseListener(
                new MouseAdapter() {
                    @Override
                    public void mouseReleased(MouseEvent mouseEvent) {
                        if(mouseEvent.getButton() == MouseEvent.BUTTON3){//3:右键
                            popUpMeue.show(editMenu, mouseEvent.getX(), mouseEvent.getY());
                        }
                    }
                    public void mouseClicked(MouseEvent e){
                        if(e.getButton() == MouseEvent.BUTTON1){
                            popUpMeue.setVisible(false);
                        }
                    }
                }
        );
    }


    private void initMenuListener() {
        menuOpen.addActionListener(this::openFile);
        menuSave.addActionListener(this::saveFile);
        menuSaveAs.addActionListener(this::saveFileAs);
        menuClose.addActionListener(this::closeFile);
        menuCut.addActionListener(this::cut);
        menuPast.addActionListener(this::past);
        menuAbout.addActionListener(event -> {//关于  弹窗
            JOptionPane.showOptionDialog(null,
                    "JNotePad 0.1\n来自 http://www.dubutter.com",
                    "关于JNotePad",
                    JOptionPane.DEFAULT_OPTION,
                    JOptionPane.INFORMATION_MESSAGE,
                    null, null, null);
        });
    }

    private void past(ActionEvent event) {

    }

    private void cut(ActionEvent event) {

    }


    private void saveFileAs(ActionEvent event) {
        int option = fileChooser.showDialog(null, null);
        if(option == JFileChooser.APPROVE_OPTION){
            //在标题栏设定文件名
            setTitle(fileChooser.getSelectedFile().toString());
            textDAO.create(fileChooser.getSelectedFile().toString());
            saveFile(event);
        }
    }

    private void saveFile(ActionEvent event) {
        Path path = Paths.get(getTitle());
        if(Files.notExists(path)){
            saveFileAs(event);
        }else{
            try{
                textDAO.save(path.toString(), textArea.getText());
                stateBar.setText("未修改");
            }catch(Throwable e){
                JOptionPane.showMessageDialog(null, e.toString(),
                        "写入失败", JOptionPane.ERROR_MESSAGE);
            }
        }
    }
    private void closeFile(ActionEvent event) {
        if(stateBar.getText().equals("未修改")){
            dispose();//释放窗口资源,关闭程序
        }else{
            int option = JOptionPane.showConfirmDialog(null,
                    "文档已修改,是否保存:",
                    "保存?",JOptionPane.YES_NO_OPTION,
                    JOptionPane.WARNING_MESSAGE);
            switch (option){
                case JOptionPane.YES_OPTION:
                    saveFile(event);
                    break;
                case JOptionPane.NO_OPTION:
                    dispose();
            }
        }
    }


    private void openFile(ActionEvent event) {
        if(stateBar.getText().equals("未修改")){
            showFileDialog();
        } else{
            int option = JOptionPane.showConfirmDialog(
                    null, "已修改,是否保存?", "保存", JOptionPane.WARNING_MESSAGE, Integer.parseInt(null)
            );
            switch (option){
                case JOptionPane.YES_OPTION:
                    saveFile();
                    break;
                case JOptionPane.NO_OPTION:
                    showFileDialog();
                    break;
                default:
                    break;
            }
        }

    }

    private void jtexAreaActionPerformed(KeyEvent event) {
        stateBar.setText("已修改");
    }


    //关闭窗口,并提示是否表存
    private void closeWindow(WindowEvent event) {
        closeFile(new ActionEvent(
                event.getSource(), event.getID(), "windowClosing"));
    }

    //设置快捷键
    private void initAccelerator() {
        //设置快捷键,,略略略
        menuCopy.setAccelerator(
                KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK)
        );
        menuPast.setAccelerator(
                KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK)
        );
    }
    //设置文本区域
    private void initTextArea(){
        textArea = new JTextArea();
        textArea.setFont(new Font("细明体", Font.PLAIN, 16));
        textArea.setLineWrap(true);
        JScrollPane panel = new JScrollPane(textArea,
                ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        getContentPane().add(panel, BorderLayout.CENTER);
    }

    //初始化状态栏(最下方)
    private void initStateBar() {
        stateBar = new JLabel("未修改");
        stateBar.setHorizontalAlignment(SwingConstants.LEFT);
        stateBar.setBorder(BorderFactory.createEtchedBorder());
        getContentPane().add(stateBar, BorderLayout.SOUTH);
    }

    public JNotePad_demo2(TextDAO textDAO){
        this();
        this.textDAO = textDAO;
    }

    //打开
    private void openFile(){
        if(stateBar.getText().equals("未修改")){
            showFileDialog();
        } else{
            int option = JOptionPane.showConfirmDialog(
                    null, "已修改,是否保存?", "保存", JOptionPane.WARNING_MESSAGE, Integer.parseInt(null)
            );
            switch (option){
                case JOptionPane.YES_OPTION:
                    saveFile();
                    break;
                case JOptionPane.NO_OPTION:
                    showFileDialog();
                    break;
                default:
                    break;
            }
        }
    }
    //保存
    private void saveFile() {
    }


    //输出问文件信息
    private void showFileDialog() {
        int option = fileChooser.showDialog(null, null);//文档选取对话框

        if(option == JFileChooser.APPROVE_OPTION){

            try {
                setTitle(fileChooser.getSelectedFile().toString());
                textArea.setText("");
                textArea.setText("未修改");
                String text = textDAO.read(fileChooser.getSelectedFile().toString());
                textArea.setText(text);
            } catch (Throwable e) {
                JOptionPane.showMessageDialog(null, e.toString(), "打开文档失败", JOptionPane.ERROR_MESSAGE);
            }
        }

    }
    //测试函数
    public static void main(String[] args) {
        //将建立的JNotePad实例与SetVisible()的动作排入事件队列
        //这玩意应该是一个Runnable接口的实现
        SwingUtilities.invokeLater( ()->{
            new JNotePad_demo2(new FileTextDAO()).setVisible(true);//true显示,false隐藏
        });
    }
}

TextDAO接口

/**
 * Created by butter on 16-11-21.
 */
public interface TextDAO {
    void    create(String file);
    void    save(String s, String file);
    String  read(String file);
}

FileTextDAO

import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Created by butter on 16-11-21.
 */
public class FileTextDAO implements TextDAO {

    @Override
    public void create(String file) {
        try {
            Files.createFile(Paths.get(file));
        } catch (IOException e) {
            Logger.getLogger(
                    FileTextDAO.class.getName()).log(Level.SEVERE, null, e);
        }
    }

    @Override
    public void save(String file, String text) {
        try(BufferedWriter writer = Files.newBufferedWriter(
                Paths.get(file),
                Charset.forName(System.getProperty("file.encoding")))){

            writer.write(text);
        } catch (IOException e) {
            Logger.getLogger(FileTextDAO.class.getName()).log( Level.SEVERE,null,e);
        }
    }

    @Override
    public String read(String file) {
        byte[] datas = null;
        try {
            datas = Files.readAllBytes(Paths.get(file));
        } catch (IOException e) {
            Logger.getLogger(FileTextDAO.class.getName()).log(Level.SEVERE, null, e);
        }
        return new String(datas);
    }
}
Java课设——文本编辑器 一、需求 编程实现一个文本编辑器,使其具有新建、打开、保存,编辑(查找、替换、大小写转换等)、统计(字数、行数、字符数等)、格式(字体设置、字体大小、字体颜色、背景颜色等)等功能。 要求:基于JFrame窗体设计、使用菜单进行功能选择。 二、工程目录 三、项目代码 TestGui类 package T_1029; import java.awt.*; import java.awt.event... 阅读详情

相关推荐

JAVA写文本编辑器(一)

        作业题,花了整整两天终于搞出来了,今天给大家整理一下思路。        这里用swing ,awt写的。        我们大概要做成一个电脑的记事本那样的一个编辑器。可以调整字体,字号,颜色。能够打开、保存文件,新建窗口,点击退出,还有一个关于介绍的窗口。整体看起来功能不是很多,只要一部分一部分的去完成就很好办了。        关键词:JAVA文本编辑器,        思路...

qq_36551426的博客 1万+

前端常用的富文本编辑组件

UEditor 是由百度「FEX前端研发团队」开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码。mavon-editor 是一款基于 vue 的 markdown 编辑器,常用于发送公告、个人博客等等;官网所说:Quill是一个跨平台的功能强大的富文本编辑器。开发者可以通过简单的API来控制编辑器的内容;个人理解:功能亲民,历史悠久,ui界面有点传统。个人使用后理解:配置复杂,使用灵活。可以左边编辑,右边展示。

IT菜鸟 3781

基于Java Swing的简易文本编辑器实战项目

Java Swing作为Java平台中用于构建桌面应用程序图形用户界面(GUI)的核心工具包,自推出以来便以其跨平台性、轻量级组件和高度可定制化特性受到广泛青睐。Swing不依赖本地操作系统资源,所有组件均通过纯Java代码绘制,实现了真正的“一次编写,到处运行”。其基于MVC(模型-视图-控制器)设计模式的架构使得组件逻辑与表现分离,便于扩展与维护。

weixin_36001279的博客 1012

13款web前端常用的富文本编辑器插件

前端 富文本编辑器插件

MR_Shi_it的博客 5299

Python《打砖块》小游戏

Python《打砖块》小游戏!

PanDaoxi 1273

opencv基础57-模板匹配cv2.matchTemplate()->(目标检测、图像识别、特征提取)

OpenCV 提供了模板匹配(Template Matching)的功能,它允许你在图像中寻找特定模板(小图像)在目标图像中的匹配位置。模板匹配在计算机视觉中用于目标检测、图像识别、特征提取等领域。: 首先,加载目标图像和要匹配的模板图像。: 选择适当的匹配方法,例如 cv2.TM_CCOEFF、cv2.TM_CCOEFF_NORMED、cv2.TM_CCORR、cv2.TM_CCORR_NORMED、cv2.TM_SQDIFF 或 cv2.TM_SQDIFF_NORMED。每种方法对应不同的匹配计算方式。

小海聊智造 1万+

Vue3 中值得推荐的富文本编辑器组件盘点

组件优点适用场景学习曲线功能全面,企业级支持完善企业级 CMS、文档协作平台中等tiptap轻量、高度可定制需要深度定制的项目高q-editor移动端优化,集成 Quasar 主题移动优先的 Web 应用低WangEditor中文友好,开箱即用国内企业系统、中小型项目低Quill轻量、模块化扩展需要自定义主题或插件的场景中等CKEditor 5现代功能、多平台支持企业级协作平台、多框架项目中等追求功能丰富性→或CKEditor 5移动端优先→q-editor快速开发→。

qq_39842184的博客 5667

基于 LSTM 的船舶轨迹预测,单步预测

基于 LSTM 的船舶轨迹预测,单步预测

fyuhao的博客 1万+

基于Java Swing开发的文本编辑器

基于Java Swing开发的中英双语文本编辑器,开源文本编辑器,需要电脑安装jdk环境使用,对java开发人员而言具有体积小巧的优势。可以说是比较完整的学习demo了。目前没有语法高亮、列块编辑模式。其他的常规使用还是可以的。NotepadJune 六月记事本。

Thorens的博客 375

MuJoCo新手必看:5分钟搞定你的第一个机器人仿真(附Python代码)

本文为零基础新手提供了一份详尽的MuJoCo物理仿真引擎入门指南。从环境搭建、MJCF模型文件解析,到编写Python控制代码,手把手教你5分钟内创建并运行第一个机器人仿真。内容涵盖双摆模型控制与自定义四轮小车构建,帮助你快速掌握这一高性能开源工具,迈出机器人学与强化学习仿真的第一步。

weixin_29032489的博客 654

(HAL)stm32f407+freertos通过usb驱动移远4G模块-EC600U

文章记录了stm32cubemx+stm32f407+freertos+usb host实现移远4G模块EC600U的usb驱动的调试过程,usb host cdc库的使用和遇到的问题及解决办法。

gongrulin的博客 3898

java swing 文本编辑器_基于Swing的简单文本编辑器

Java小作业,任务是写一个有改字体颜色大小的文本编辑器。其实相比windows自带的记事本功能还要弱,不过还是拿来练练手了。这里主要也就实现了简单的文件读写和字体等更改操作,还是非常简易的。实现代码import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.A...

weixin_33122947的博客 508

【现代电路理论】【2】考尔法设计无源单口网络

夏 弥:其实你在冰面上看到鱼浮上来 明年冬天如果你还在那里,那鱼还是会上来换气 那时候你就可以带一把冰镐 把冰面砸开把鱼捞上来熬汤

痛苦的时候装出幸福相,这不是那么难做到的事 2884

25、Java Swing文本编辑器的实现

最简单的文本编辑器要数 Windows 的记事本了。在学习了本章知识之后,本次案例将完成一个简单的文本编辑器程序。它可以打开文本文件,并输出文本文件的位置和内容。其中用到了菜单、工具栏以及选项卡等组件,是一个综合类的应用,主要实现步骤如下。 (1) 创建一个 TextFileOpener 类并继承 JFrame 父类。 import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionLi

you can you up up up的博客 615

使用VScode编译AMI代码

我现在了解到的和拿到的code,都是基于AMI的code,一般的编译AMI都需要搭配使用AMI的编译环境Veb,而Veb用到现在,一直都觉得有点卡顿,浏览代码的体验也比VScode差很多。在这之前还要,考虑设置TOOLS_DIR和EWKE_DIR的环境变量,因为在Veb中是可以通过设置自动设置的,但是VScode里面没用设置环境变量的选项。这里可以看出,Veb工具栏中的Build和Rebuild All的命令对应这里的make和make rebuild,也就是说Veb是调用此命令进行编译的。

Dodijd的博客 1880

成功解决AttributeError: ‘ImageDraw‘ object has no attribute ‘textsize‘

​ 成功解决AttributeError: 'ImageDraw' object has no attribute 'textsize' 目录 解决问题 解决思路 解决方法 解决问题 AttributeError: 'ImageDraw' object has no attribute 'textsize' 解决思路 属性错误:'ImageDraw'对象没有属性'textsize' 解决方法 最新的Pillow 10.0.0 版本已经删除了这个函数,导致两个库(Pillow 、wordc

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 4775

java swing 文本编辑器_Java Swing文本编辑器的实现

最简单的文本编辑器要数 Windows 的记事本了。在学习了本章知识之后,本次案例将完成一个简单的TextFileOpener文本编辑器程序。它可以打开文本文件,并输出文本文件的位置和内容。其中用到了菜单、工具栏以及选项卡等组件,是一个综合类的应用,主要实现步骤如下。(1) 创建一个 TextFileOpener 类并继承 JFrame 父类。packagech18;importjava.aw...

weixin_32541333的博客 326

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java swing实现简单的登录界面

主要实现了简单的登录界面,用户输入正确的用户名并且输入正确的密码之后可以登录 主要用到的组件有: JLabel标签 JButton按键 JTextField文本框 JPassField密码框 JPanel面板 实现了用户点击按钮可以处理事件 下面是程序的源码 import java.awt.FlowLayout; import java.awt.event.ActionEvent; imp...

Woo_home的博客 2万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Java Swing文本编辑器的实现_Java Swing文本编辑器的实现

最简单的文本编辑器要数 Windows 的记事本了。在学习了本章知识之后,本次案例将完成一个简单的文本编辑器程序。它可以打开文本文件,并输出文本文件的位置和内容。其中用到了菜单、工具栏以及选项卡等组件,是一个综合类的应用,主要实现步骤如下。(1) 创建一个 TextFileOpener 类并继承 JFrame 父类。package ch18; import java.awt.BorderLayo...

weixin_35890667的博客 350

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java Swing简单文本编辑器

import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundExcept..

allway2的博客 698

Java课程设计-基于Swing的文本编辑器

Java课程设计-基于Swing的文本编辑器1.介绍2.相关技术3.项目地址4.所需环境5.安装教程6.运行截图7.相关博客 1.介绍 设计一个类似于Windows记事本(Notepad)的Java程序。可以打开、新建、保存一个文本文件; 对选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切等); 在文本中能够插入对象。 2.相关技术 Java的Swing编程 Java的文件读写 3.项目地址 https://gitee.com/jack0240/text-edi

Jack魏 2万+

Java Swing 文本编辑器 (全选,剪切,复制,粘贴)

Java GUI 编程 AWT(Abstract Window Toolkit) 抽象窗口工具包 Swing 基于AWT。 SWT(Standard Widget Toolkit) 标准小部件的工具包 Concepts Container和Component 类继承层次 Requirement 如图: Code import javax.swing.*; import java.awt....

wuyujin1997的博客 4594

基于Java Swing的文本编辑器-版本二

基于Java Swing的文本编辑器-版本二1. 介绍2. 相关技术3. 项目地址4. 所需环境5. 安装教程6. 运行截图7. 相关博客 1. 介绍 设计一个类似于Windows记事本(Notepad)的Java程序。可以打开、新建、保存一个文本文件; 对选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切等); 在文本中能够插入对象。 2. 相关技术 Java的Swing编程 Java的文件读写 3. 项目地址 https://gitee.com/jack024

Jack魏 19万+

java做一个简单的文本编辑器

代码:主框架package Text; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.io.Buf...

Kingsly_Liang的博客 1万+

Swing 实例——文本编辑器

本次案例将完成一个简单的文本编辑器程序。它可以打开文本文件,并输出文本文件的位置和内容。其中用到了菜单、工具栏以及选项卡等组件,是一个综合类的应用,主要实现步骤如下。 参考资料: 添加链接描述 package swing; import java.awt.BorderLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent...

qq_37917691的博客 669

Java Swing文本编辑器的实现

最简单的文本编辑器要数 Windows 的记事本了。在学习了本章知识之后,本次案例将完成一个简单的文本编辑器程序。

unber的博客 775
上一篇: vip唯品会仿页
下一篇: 机器学习(二) 模型评估与选择
Tony L.Du
博客等级 码龄11年 73粉丝 156原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值