java笔记28 GUI

Java-GUI快速入门 目录 1.GUI的介绍 1.1GUI概述 1.2Java提供了三个主要包做GUI开发: 2.Swing组件 2.1顶层容器介绍 2.2中间容器 2.3基本组件 3.API介绍 3.1Jframe组件 3.2Panel组件 3.3功能组件 4.案例代码 4.1UI介绍 4.2代码 5.插件介绍WindowBuilder 5.1搜索WindowBuilder 5.2.... 阅读详情

1.       GUI

图形化界面Graphical  User Interface  图形用户接口

用图形的方式来显示计算机操作的界面,方便直观        

2.       CLI

        Command lineUser Interface 命令行用户接口

        就是常见的dos命令行操作

        需要记忆一些常用的命令,操作不直观

3.       java为GUI提供的对象都存在java.Awt和java.Swing中

        Awt:Abstract Window Tookit(抽象窗口工具包)

        需要调用本地系统方法实现功能,属于重量级控件(比较依赖底层)

        Swing:在Awt的基础上,建立的一套图形界面系统,其中提供了更多的组件,完全由java实现,增强了移植性,属轻量级控件。

        

 

 

 

4.       布局管理器

容器中的组件的排放方式,就是布局。

常见的布局管理器:

FlowLayout(流式布局管理器)

从左到右的顺序排列。

Panel默认的布局管理器。

BorderLayout(边界布局管理器)

东,南,西,北,中

Frame默认的布局管理器。

GridLayout(网格布局管理器)

规则的矩阵

CardLayout(卡片布局管理器)

选项卡

GridBagLayout(网格包布局管理器)

非规则的矩阵

5.       创建图形化界面

        1、创建frame窗体

        2、对窗体进行基本设置

                 比如大小  位置  布局

        3、定义组件

        4、将组件通过窗体的add方法添加到窗体中

        5、让窗体可视化,setVisible(true)      

import java.awt.*;

import javax.swing.*;

public class H_01GUI {

         public static void main(String[] args) {             

                   Frame f=new Frame("my awt");

                   f.setSize(500, 400);//先横坐标  再右坐标,设置窗体大小

                   f.setLocation(400, 200);//设置出现位置(左上角到屏幕左上角的距离)

                   f.setLayout(new FlowLayout());//设置流式布局

                   Button  b=new Button("一个按钮");//创建一个按钮                  

                   f.add(b);//按钮添加到框架中

                   f.setVisible(true);//设置可视化                        

         }

}


此时没有功能,无法关闭

6.       事件监听机制

         事件监听机制的特点

        1、事件源: awi包、swing包中的图形界面组件

        2、事件:每一个事件源都有自己特有的对应事件和共性事件(鼠标、键盘事件)

        3、监听器:将可以出发某一个时间的动作都已经封装到监听器

                 以上三者在java中都已经定义好了

                 直接获取其对象就可以了

        4、事件处理:     

        public abstract class WindowAdapter

                 extends Object

                 implements WindowListener, WindowStateListener, WindowFocusListener

        接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。

         正常应该使用

         class Mywin implements WindowListener

         {

                   覆盖7个方法、但只想要用关闭方法,其他动作都没没有用到,可是却必须复写,非常麻烦。

         }      

        因为WindowAdapter已经实现了WindowListener接口

        并覆盖了其中所有的方法,那么只要继承自WindowAdapter覆盖需要的方法即可

                 class Mywin extends WindowAdapter

                 {

                          

                 }

import java.awt.*;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

 

public class H_04JianTing {

    public static void main(String[] args) {

        Frame f=new Frame("my awt");

        f.setSize(500, 400);//先横坐标  再右坐标,设置窗体大小

        f.setLocation(400, 200);//设置出现位置(左上角到屏幕左上角的距离)

        f.setLayout(new FlowLayout());//设置流式布局

        Button  b=new Button("一个按钮");//创建一个按钮

        f.add(b);//按钮添加到框架中

       

        f.addWindowListener(new WindowAdapter()//对frame添加监听

        {

            public void windowClosing(WindowEvent e)//添加关闭监听

            {

                System.out.println("我关");

                System.exit(0);

            }

            public void windowActivated(WindowEvent e)//添加活动监听

            {

                System.out.println("活了");            

            }

            public void windowOpened(WindowEvent e)

            {              

                System.out.println("我被打开了");

            }

        });    

        f.setVisible(true);//设置可视化  如果在监听事件前,那么监听“打开”将不会执行

    }

}

 

class  MyWin extends WindowAdapter

{

    public void windowClosing(WindowEvent e)

    {

        System.out.println("window closing"+e.toString());

        System.exit(0);//可以使用匿名内部类

    }

}


7.       鼠标和键盘的监听

//给文本框添加键盘监听

        tf.addKeyListener(new KeyAdapter()

        {

            public void keyPressed(KeyEvent e)

            {

                int code=e.getKeyCode();

                if(!(code>KeyEvent.VK_0&&code<KeyEvent.VK_9))//判断输入的键是否是数字

                    {

                        System.out.println("输入错误");

                        e.consume();//不按照默认方式处理,屏蔽键

                    }

            }      

        });    

       

        //给按钮添加键盘监听

        but.addKeyListener(new KeyAdapter()

        {

            public void keyPressed(KeyEvent e)

            {

                //

                if(e.getKeyCode()==KeyEvent.VK_ESCAPE)

                    System.exit(0);

                if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)

                    System.out.println("发送信息");

                //System.out.println(e.getKeyChar()+"--"+e.getKeyCode());

            }

        });    

       

        //给按钮添加鼠标监听

        but.addMouseListener(new MouseAdapter()

        {

            private int count=1;

            private int clickCount=1;

            public void mouseEntered(MouseEvent e)

            {

                System.out.println("鼠标进入"+count++);

            }

            public void mouseClicked(MouseEvent e)

            {

                if(e.getClickCount()==2)

                    System.out.println("双击动作"+clickCount++);

                System.out.println("点击"+clickCount++);

            }          

        });


 

8.       简易记事本程序

GUI难的地方在于设计好的布局。

后台程序起始比较简单,就是将对应的事件监听添加到对应的组件上。

以下是一个简易记事本程序

import java.awt.*;

import java.awt.event.*;

import java.io.*;

 

public class H_11MenuDemo

{

    public static void main(String[] args)

    {

       

        new MenuDemo();

    }

}

 

class MenuDemo

{

    private Frame f;

    private MenuBar mb;

    private Menu fileMenu,subMenu;

    private MenuItem openItem,saveItem,closeItem,subItem;

    private TextArea ta;

    private FileDialog openDia,saveDia;

    private File file;

   

    MenuDemo()

    {

        init();

    }

    public void init()

    {

        f=new Frame("my window");

        f.setBounds(300, 200, 600, 500);

        //f.setLayout(new FlowLayout()); 直接用边界布局

        ta=new TextArea();

       

        //实例化

        mb=new MenuBar();

        fileMenu=new Menu("文件");

        openItem=new MenuItem("打开");

        saveItem=new MenuItem("保存");

        closeItem=new MenuItem("退出");

        subItem=new MenuItem("文本文档");

        subMenu=new Menu("新建");

       

        //添加到菜单

        subMenu.add(subItem);

        fileMenu.add(subMenu);

        fileMenu.add(openItem);

        fileMenu.add(saveItem);

        fileMenu.add(closeItem);

       

               

        mb.add(fileMenu);//添加菜单到菜单条

        f.setMenuBar(mb);//添加菜单条到框架

        f.add(ta);

        openDia=new FileDialog(f,"打开",FileDialog.LOAD);//打开窗口

        saveDia=new FileDialog(f,"保存",FileDialog.SAVE);//保存窗口界面

       

        myEvent();//添加监视器

        f.setVisible(true);   

    }

    private  void myEvent()

    {

        saveItem.addActionListener(new ActionListener()    

        {

            public void actionPerformed(ActionEvent e)

            {

                if(file==null)

                {

                    saveDia.setVisible(true);

                    String dirpath=saveDia.getDirectory();

                    String filename=saveDia.getFile();

                    if(filename==null||dirpath==null)

                        return;//如果没有选择,则直接返回

                    file=new File(dirpath,filename);

                }

                BufferedWriter bufw=null;

                try

                {

                    bufw=new BufferedWriter(new FileWriter(file));

                    String text=ta.getText();

                    bufw.write(text);

                    bufw.flush();

                } catch (IOException e1) {

                    e1.printStackTrace();

                }

                finally

                {

                    if(bufw!=null)

                    {

                        try {

                            bufw.close();

                        } catch (IOException e1) {

                            e1.printStackTrace();

                        }

                    }

                }

               

            }

        });

       

        openItem.addActionListener(new ActionListener()//打开按钮的监听

        {

            public void actionPerformed(ActionEvent e)

            {

                openDia.setVisible(true);

                String dirpath=openDia.getDirectory();

                String filename=openDia.getFile();

                if(filename==null||dirpath==null)

                    return;//如果没有选择,则直接返回

                ta.setText("");

               

                BufferedReader bufr=null;

                String line=null;

                try

                {

                    bufr=new BufferedReader(new FileReader(newFile(dirpath,filename)));

                    while((line=bufr.readLine())!=null)

                    {

                        ta.append(line+"\r\n");

                    }                  

                } catch (IOException e1)

                {

                    throw new RuntimeException("读取失败");

                }

                finally

                {

                    if(bufr!=null)

                    {

                        try {

                            bufr.close();

                        } catch (IOException e1) {

                            e1.printStackTrace();

                        }

                    }                  

                }          

            }      

        });

        subItem.addActionListener(new ActionListener()

        {

            public void actionPerformed(ActionEvent e)

            {

                new MenuDemo();//达到新建文件的效果

            }      

        });

        closeItem.addActionListener(new ActionListener()

        {

            public void actionPerformed(ActionEvent arg0)

            {

                System.exit(0);

            }          

        });

        f.addWindowListener(new WindowAdapter()

        {

            public void windowClosing(WindowEvent e)

            {

                System.exit(0);

            }

        });

    }  

}


         运行效果

        

9.       可运行的jar包

         打包

         Javac  –d c:\myclass  MyMenuTest.java

         Jar –cvf my.jar MyMenu

 

         写一个txt   写明主函数

         Main-Class: mymenu.MyMenuTest   回车

         Class后面要加空格,最后要加回车

         不然不能识别。

         不带GUI的java程序可以打包,但是点击也没有用。

Java笔记(21)GUI图形界面 Java笔记(21)GUI图形界面 1.GUI概述 GUI全称:Graphical User Interface(图形用户接口) 是用图形的方式,来显示计算机的操作的界面,这样可以更方便更直观的让用户使用。 此外,还有一种CLI:Command line User Interface(命令行用户接口),这种接口常见的就是DOS命令行操作,这种方式需要记一些常用的命令,操作不直观,对用户也不太友好;... 阅读详情

相关推荐

2020年Java讲课笔记目录

1、Java讲课笔记01:搭建Java开发环境 2、Java讲课笔记02:Java集成开发环境 3、Java讲课笔记03:Java基本语法

howard2005的专栏 1万+

JavaGui超详细笔记——Gui概念、Swing概述、容器组件、布局管理器、常用组件、事件处理、对话框、内部类

Gui概念、Swing概述、容器组件、布局管理器、常用组件、事件处理、对话框、内部类

xinin919的博客 3527

java gui学习笔记

通过学习笔记,了解gui界面设计中常见的组件添加功能等

JAVA——GUI笔记

参考书籍 《JAVA语言程序设计 基础篇 原书第8版》 图形用户界面基础 GUI API包含的类可分为三个组:组件类,容器类,辅助类 组件类:用来创建用户界面的,如:JButton JLabel JTextField Component和JComponent是抽象类。 容器类:用来包含其他组件的,如:JFrame JPanel JApplet 辅助类:用来支持GUI组件的, 如:Grap...

TmEnbaby的博客 400

RK3588 Ubuntu 20.04 编译 eglinfo 踩坑实录:从 Python 环境配置到 Mali 驱动调试

本文详细解析了在RK3588平台上使用Ubuntu 20.04编译eglinfo的全过程,包括Python环境配置、waf构建系统升级、Mali驱动调试等关键步骤。通过系统级软链接方案、驱动状态诊断和EGL环境验证技巧,帮助开发者快速解决常见问题,构建可靠的图形调试环境。

weixin_29158047的博客 374

射频电路设计——射频器件基础

本文仅供自己复习使用,请勿转载! 射频电路制作方法 MCM工艺 CMOS工艺 趋肤效应、深度 频率越高趋肤效应越明显 高频器件 高频电阻 绕线的比贴片的多一个电感,是因为绕线的因为是线绕制的,只有有线就会有电感,所以绕线电阻等效模型会比贴片的多一个电感 多晶硅电阻模型 深线性区MOS电阻 高频电阻的频率响应 记忆的话就后面的频率特性有点像电容的 高频电容 作用 单层贴片式电容 多层贴片式电容 MIM电容 MOM电容 由于是并联的,所以总的电容值是单个的直接相加 PN结电容 M.

输出每日所学,供大家学习使用 7151

Java---GUI编程详解

GUI编程 组件: 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标 键盘事件 破解工具 1、简介 1.1.gui的核心技术:Swing AWT 1.2.不流行: 界面不美观 需要jre环境 2、AWT 2.1、Awt介绍 1.包含了很多类和接口。GUI:图形用户界面编程 2.元素:窗口,按钮,文本框 2.2、 组件和容器 1.Frame /关于Frame的一些方法 package gui_study; import java.awt.*; //GUI的第一个界面 public cl

Zero摄氏度的博客 5467

Matlab2021a破解版安装与激活实战教程(含详细步骤截图)

本文详细介绍了MATLAB R2021a的正版安装流程与核心功能优化,包括系统要求、安装步骤、性能调优及深度学习工具箱的应用。通过实战教程和代码示例,帮助用户高效搭建开发环境并掌握关键技术,特别适合工程计算与科学研究的专业人士。

vvv99的博客 461

java gui 记_java gui笔记

import java.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;import javax.swing.*;public classMain{JButton setButtons(String name){JButton tButton= newJButton();tButton.setFo...

weixin_33702545的博客 183

Kettle入门指南:从安装到数据转换实战

本文提供Kettle(Pentaho Data Integration)的完整入门指南,涵盖从Java环境安装、软件配置到核心概念(转换与作业)的详细解析。通过实战案例,手把手教你如何将文本文件数据导出到Excel,并连接MySQL数据库进行数据导入,帮助你快速掌握这一强大ETL工具的基本使用,实现高效数据搬运与转换。

weixin_29266647的博客 450

别把 ABAP 时间戳当数字算:TIMESTAMP / TIMESTAMPL 的语义、正确用法与项目级避坑指南

ABAP时间戳使用指南与常见陷阱 摘要:ABAP中的时间戳(TIMESTAMP/TIMESTAMPL)本质是UTC时间的数字表示,而非累计秒数。正确用法包括:直接比较时间戳顺序、使用CONVERT TIME STAMP进行时区转换、通过CL_ABAP_TSTMP计算时间差。关键注意事项:绝对不要对时间戳本身进行数学运算,否则会导致非法时间值。实际项目中需特别注意SAP Gateway的ETag处理、跨时区系统集成和CDS视图中的时间戳使用场景,避免将本地时间误存为UTC时间戳或在云迁移时产生时区问题。(14

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 346

JAVA GUI (总结)

JAVA GUI 1.编写一个Java程序,该程序运行的运行结果如下所示。 代码: import java.awt.*; import java.awt.event.*; public class TestFlowLayout { public static void main(String args[]) { Frame f = new Frame("Flow Layout"); ...

A_dmin的博客 2万+

Unity之Hololens2开发MRTK Profile详解

配置 MRTK 的主要方式之一是使用基础包中的配置文件。场景中的主要对象具有活动配置文件 - 一个 ScriptableObject。顶级 MRTK 配置配置文件包含主核心系统的每个核心的子配置文件数据,每个主核心系统都旨在配置其相应子系统的行为。此外,这些子配置文件也是 ScriptableObjects,因此可以包含对低它们一级的其他配置文件对象的引用。实质上,有一个包含已连接配置文件的完整树,这些配置文件构成了如何初始化 MRTK 子系统和功能的配置信息。

TxNet 1035

java学习笔记——GUI编程

学习Gui的核心技术Swing和 AWT,包括窗口组件、容器、弹窗、标签、按钮等基础知识,方便以后写出自己心中想要的一些小工具。

haryjiang42的博客 1007

近五年体内微/纳米机器人赋能肿瘤精准治疗综述:以 GBM 为重点

摘要 微/纳米机器人在实体瘤治疗领域展现出突破性潜力,通过主动运动能力解决传统纳米药物递送效率低、渗透不足等核心问题。2021-2025年间形成三条技术路线:1) 磁驱、声驱等运动增强递送实现深层渗透;2) 与免疫治疗融合实现原位免疫唤醒;3) 针对胶质母细胞瘤开发跨屏障递送系统。研究重点从单一运动性能转向"运动-分布-疗效"的系统评价,需建立标准化指标评估运动学参数、肿瘤分布均匀性和安全性。未来挑战在于临床转化的可制造性、闭环操控及生物相容性优化,特别是对血脑屏障穿透等复杂场景的系统集

AllenLV的博客 5167

独立游戏之路:Tap篇 -- 个人开发者上架TapTap步骤和注意事项

作为一名游戏开发者,将自己的独立游戏上架到 TapTap 平台是一个不错的选择。TapTap 是一个拥有大量用户的游戏社区平台,上架游戏可以让更多的玩家发现和体验你的游戏。TapTap 是一个游戏社区平台,用户可以在平台上下载和分享游戏。TapTap 拥有大量的用户,并且用户活跃度高,这为独立游戏开发者提供了一个很好的展示和推广平台。进入TapTap开发者服务后台。

陈言必行 -- Unity游戏开发领域优质博主 6421

Java笔记——Java GUI编程

这里我们添加鼠标监听器的构造方法中使用的是内部类中的匿名类,这个其实将相当于将实现监听功能的类给简单化了。每个Jpanel都有一个布局管理器对象,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器,调用Jpanel的setLayout方法改变其布局管理器对象或通过构造方法设置。GridLayout布局管理器是矩形网格,在网格中放置组件,每个网格的高度和宽度都相等,组件随着网格的大小而在水平和垂直方向上拉伸,网格的大小是由容器的大小和创建网格的多少来确定的。

a25847a的博客 1090

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

JAVA与GUI

—— 有些东西永远比其他东西重要,自己去区分;有些概念永远值得花时间反复理解,自己去体会。   最近在维护公司的老项目,居然还在用Java Swing做客户端工具,如下图:   从第二张图片的版本号可以看出来,这个老家伙是2014年的产物,而且很可能之后一直没有更新过。但是没办法,老项目需要人维护,只有硬着头皮去学Java Swing。   因为Swing本来就是个早已经

Jeff 的专栏 4571

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java GUI编程

本文详细介绍了Java GUI编程的基础知识,包括Swing和AWT框架、事件处理以及高级GUI组件的使用。通过示例代码和表格总结,帮助读者更好地理解和应用Java中的GUI编程,提高应用程序的用户交互体验。

weidl001的博客 1685

基于《狂神说java》GUI编程--学习笔记

本笔记参考于学友:小尹^_^ ;本笔记仅做学习与复习使用,不存在刻意抄袭。给各位学友强烈推荐《遇见狂神说》他的整套Java学习路线使我获益匪浅!!!点击跳转至遇见狂神说哔哩哔哩首页如果你也是狂神的小迷弟,可以加我好友一起探讨学习。...

wudidahuanggua的博客 559

Java笔记-Topic 18 GUI

Java笔记-Topic 18 GUIGUI是什么GUI创建GUI(javax.swing里面的JFrame和JButton)java.awt 和 javax.swing一些背景知识:java.awt包第一个GUI容器和组件容器的事例框架:最常用的容器之一组件的事例在Java API中的容器和组件的位置事件和用户交互的处理Java和事件驱动编程其他的事件的举例在GUI里做一些操作事件 & 源 & 监听器编写事件处理程序其他的事件:鼠标事件JLable 和JButton 类组件 容器 和布局管

iamzecorz的博客 601

Java GUI 框架如何选择?

AWT是 Java 最早的 GUI 框架,它直接调用本地操作系统的 GUI 功能。虽然 AWT 功能比较基础,但它仍然是所有 Java GUI 框架的基础。} });} }} });} }} });} }} });} }});适用场景:AWT 适合一些简单的、轻量级的应用场景,但它的组件比较原始,外观和功能有限。

四楼没电梯的专栏 2392

java gui是什么_Java GUI编程(一)

********************第16章 GUI编程 **************************一.什么是GUIGUI= Graphical User Interface 图形用户接口 图形用户界面GUI是用java来编写带界面的应用程序两套技术1. AWT(Abstract Window Toolkit)抽象窗口工具集图形界面不是java本身实现的,其实是依赖于操作系统的底层函...

weixin_42407617的博客 6506

JAVA GUI设计

9.1AWT和Swing概述 9.1.1AWT概述 图形用户界面GUI(Graphical User Interfaces),给用户提供了一个交互式的直观图形化操作界面。 提供了程序的外观和感觉 每个Java程序利用GUI图形用户界面接受用户的输入,向用户输出程序运行的结果。 Java语言中,为了方便图形用户界面的开发,设计了专门的类库来生成各种标准图形界面元素和处理图形界面的各种事件。用来生...

AnalogElectronic的博客 3309

关于Java中GUI的笔记

关于Java重要API的学习笔记

Smoke_fog的博客 701

黑马程序员 java_GUI笔记

-------android培训 、java培训、期待与您交流! ---------- GUI(图形用户界面) GUI Graphical User Interface(图形用户接口)。 用图形的方式,来显示计算机操作的界面,这样更方便更直观。 CLI Command line User Interface (命令行用户接口) 就是常见的Dos命令行操作。  需要记忆一些常

学习笔记 1592
上一篇: java笔记27 编码表与编码转换
下一篇: java笔记29 网络编程(UDP TCP)
thoris
博客等级 码龄12年 10粉丝 55原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值