前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA入门学习十二

JAVA入门学习十二

作者头像
全栈工程师修炼指南
发布2020-10-23 15:19:09
1K0
发布2020-10-23 15:19:09
举报

[TOC]

GUI界面开发
1.GUI布局管理器

Java总五大布局管理器:

  • FlowLayout(流式布局管理器)
    • 从左到右的顺序排列,Panel默认的布局管理器。
  • BorderLayout(边界布局管理器)
    • 东,南,西,北,中,Frame默认的布局管理器。
//边界布局勾画出一个集装箱,安排和调整其成分放在五个区域:北,南,东,西,和中心。
public class BorderLayout
extends Object
implements LayoutManager2, Serializable

//静态成员
BorderLayout.NORTH  //北部
BorderLayout.SOUTH  //南边
BorderLayout.CENTER //中心
BorderLayout.WEST   //西部
BorderLayout.EAST   //东部

//构造方法
BorderLayout(int hgap, int vgap)  //用指定的组件之间的间隙构造一个边框布局。
  • GridLayout(网格布局管理器)规则的矩阵比如计算器程序中的数字1-9
  • CardLayout(卡片布局管理器)选项卡
  • GridBagLayout(网格包布局管理器):非规则的矩阵计算器中的加减;
2.GUI界面显示

描述:利用JAVA的Graphical User Interface(图形用户接口)来进行实现展示GUI界面;

JAVA-Frame类语法:

java.lang.Object 
java.awt.Component 
java.awt.Container 
java.awt.Window 
java.awt.Frame 

//一个 Frame是一个带有标题和边框的顶层窗口。 
public class Frame
extends Window
implements MenuContainer

//构造方法
Frame(String title)  //构建一个新 Frame最初无形对象的指定标题。  
Frame(String title, GraphicsConfiguration gc) //构建了一个新的开始,看不见的 Frame对象和指定的标题和 GraphicsConfiguration。  

//常用方法:
setLayout(new 布局管理器);//设置布局管理器
setSize(width,heigh); //设置窗体大小
setLocation(x,y); //设置窗体出现在屏幕的位置
setIconImage(); //设置软件icon图标
setVisible(true); //界面显示

补充知识:

  • 窗口监听:
// Interface WindowListener :它是一个接口,用于接收窗口事件的侦听器接口
public interface WindowListener extends EventListener
public interface MouseListener extends EventListener
public interface KeyListener extends EventListener

//Frame对象监听器
addWindowListener
addMouseListener
addKeyListener
addActionListener

//适配器
WindowAdapter //用于接收窗口事件的抽象适配器类,在这个类中的方法是空的。此类存在于创建侦听器对象的方便性。 \
MouseAdapter //鼠标适配器
KeyAdapter //键盘适配器
ActionListener //动作监听

适配器设计模式:

  • 在使用监听器的时候, 需要定义一个类事件监听器接口.
  • 通常接口中有多个方法, 而程序中不一定所有的都用到, 但又必须重写这很繁琐.
  • 适配器简化了这些操作, 我们定义监听器时只要继承适配器, 然后重写需要的方法即可.

适配器原理:

  • 适配器就是一个类, 实现了监听器接口, 所有抽象方法都重写了但是方法全是空的.
  • 适配器类需要定义成抽象的,因为创建该类对象调用空方法是没有意义的
  • 目的就是为了简化程序员的操作, 定义监听器时继承适配器, 只重写需要的方法就可以了.

事件处理:

  • 事件: 用户的一个操作
  • 事件源: 被操作的组件
  • 监听器: 一个自定义类的对象, 实现了监听器接口, 包含事件处理方法,把监听器添加在事件源上, 当事件发生的时候虚拟机就会自动调用监听器中的事件处理方法

基础案例:

package com.weiyigeek.gui;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JOptionPane;

public class Demo1_StartGUI {
  public static void main(String[] args) {
    //1.JAVA-GUI界面显示设置
    Frame f = new Frame("我的第一个Title!");
    f.setSize(500, 300); //显示大小
    f.setLocation(500, 500); //显示位置
    f.setIconImage(Toolkit.getDefaultToolkit().createImage("C:\\net.png"));  //软件图标
    //2.显示按钮
    Button button = new Button("测试");
    Button bt = new Button("退出");
    f.add(bt);
    f.add(button);
    f.setLayout(new FlowLayout()); //设置流布局管理器
    //3.事件源是窗体把监听器注册到事件源上,事件对象传递给监听器(让窗口适配器可以支持)
    f.addWindowListener(new WindowAdapter() {
        //当然您也可以建立一个类实现WindowsAdapter接口中方法;
        //或者采用匿名内部类;
            public void windowClosing(WindowEvent e) {
            System.exit(0);//退出虚拟机,关闭窗口 
        } 
    });
    f.addWindowListener(new newWindowListener());
    
    //4.鼠标监听 
    bt.addMouseListener(new MouseAdapter() {
      //单击监听
      public void mouseClicked(MouseEvent e) {
        System.out.println("单击");
        System.exit(0);
      }
      //释放监听
      @Override
      public void mouseReleased(MouseEvent e) {
        System.out.println("释放");
        System.exit(0);
      }
    });

    //5.键盘监听
    button.addKeyListener(new KeyAdapter() {
      @Override
      public void keyReleased(KeyEvent e) {
        System.out.println("您当前输入的值:" + e.getKeyCode() + "字符值:" + e.getKeyChar());
        if(e.getKeyCode() == KeyEvent.VK_ENTER) {
          System.exit(0);
        }
      } 
    });
    
    //6.动作监听
    button.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        System.exit(0);
      }
    });
    
    f.setVisible(true); //是否可显示
  }
}

//实现重写接口中方法
class newWindowListener implements WindowListener {
  //软件打开时候显示
  @Override
  public void windowOpened(WindowEvent e) {
    System.out.println(e.paramString());
    System.out.println(e.getClass());
  }

    //软件关闭时候执行
  @Override
  public void windowClosing(WindowEvent e) {
  }
  @Override
  public void windowClosed(WindowEvent e) {
    }
    
    //
  @Override
  public void windowIconified(WindowEvent e) {
  }
  @Override
  public void windowDeiconified(WindowEvent e) {
  }
  //软件默认打开以及缩小还原的时候显示执行
  @Override
  public void windowActivated(WindowEvent e) {
    System.out.println("Windows Show");
  }
  
  //软件缩小时候触发(弹框)
  @Override
  public void windowDeactivated(WindowEvent e) {
      JOptionPane.showMessageDialog(null, "友情提示");  
  }
}
WeiyiGeek.
WeiyiGeek.

WeiyiGeek.

https://blog.csdn.net/NTrinity/article/details/80435990

3.输入框

描述:TextField 允许一个单行文本的编辑。

//类
public class TextField
extends TextComponent

//构造方法
TextField(String text, int columns) //构造一个与指定要显示的指定文本初始化的新文本字段,并足够大以保持指定的列数。 
String getText(String t); // 获取该输入框组件里面的字符串内容
void setText(String t)  //将由该文本组件呈现的文本设置为指定的文本。

实际利用:

TextField tf = new TextField("输入框默认显示数值",15);  //预设值文本框以及大小
4.按钮

描述:Button按钮图标相关类

//类创建一个标记按
public class Button extends Component implements Accessible

//构造方法
Button(String label)  //用指定的标签构造一个按钮。

void setLabel(String label)  //将按钮的标签设置为指定的字符串。  
String getLabel()  //获取此按钮的标签。 
void addActionListener(ActionListener l)  //添加指定的操作侦听器从该按钮接收动作事件。
void removeActionListener(ActionListener l) //移除指定的动作侦听器,以便它不再从该按钮接收动作事件。

实际利用:

Button bt = new Button("按钮");
5.文本框

描述:一个 TextArea对象是一个多行显示文本区域。它可以设置为允许编辑或是只读的。

//类定义
public class TextArea
extends TextComponent

//构造方法
TextArea(String text, int rows, int columns, int scrollbars) 
使用指定的文本构造一个新的文本区域,并以指定的行、列和滚动条可见性。 
//成员变量
SCROLLBARS_HORIZONTAL_ONLY  //创建和显示水平滚动条只。 
SCROLLBARS_VERTICAL_ONLY  //创建和显示垂直滚动条只。 

//常用方法
void append(String str)  //将给定的文本到文本区的文本。
void insert(String str, int pos) //在该文本区域中的指定位置插入指定的文本。 
int getRows/Columns()  //返回文本区域中的行/列数。 
void replaceRange(String str, int start, int end)  //用指定的替换文本替换指定的开始和结束位置之间的文本。  
//继承了java.awt.TextComponent中的获取文本
String getText() //返回由该文本组件提交的文本。默认情况下,这是一个空字符串。 
void setText(String t) //将由该文本组件呈现的文本设置为指定的文本。(会覆盖原来的)
void setEditable(boolean b) //设置决定这是否是可编辑的文本组件。 
void setBackground(Color c) //设置此文本组件的背景颜色。 
setFont(Font f) //设置此组件的字体。

实用实例:

TextArea ta = new TextArea("Hello", 5, 40);  //默认显示Hello字符串然后5行10列
ta.getText();
ta.setText("覆盖原来的字符");
ta.append("追加字符串到文本编辑框中");
ta.setEditable(false);  //显示的文本框禁止显示
ta.setBackground(new Color(255,255,255)); //显示白色 => 帮助 ctrl+shift+t
ta.setFont(new Font("xxx",Font.PLAIN,20)); //设置发送字体大小
6.面板

描述:Panel是最简单的容器类,一个面板的默认布局管理器是FlowLayout布局管理器。

//继承java.awt.Container类其中的方法也将被继承
public class Panel extends Container implements Accessible

//构造方法
Panel(LayoutManager layout)  //创建一个新的面板与指定的布局管理器

//方法
setLayout(五大布局); //面板设置布局

实际案例:

Panel center = new Panel();
center.setLayout(new BorderLayout()); //设置为边界布局管理器
center.add(组件,BorderLayout.SOUTH); //设置组件的位置
7.颜色字体

描述:颜色是Color类而字体是Font类;

  • Color类用于封装的颜色在默认的sRGB色彩空间或颜色任意颜色空间的 ColorSpace鉴定,并且可以采用alpha指定显示的透明度
public class Color
extends Object
implements Paint, Serializable

//构造方法
Color(ColorSpace cspace, float[] components, float alpha) //在指定的 ColorSpace在 float阵列和指定的阿尔法指定颜色分量的颜色创建。  
Color(int r, int g, int b)  //一个指定的红、绿色不透明的sRGB色彩造成的,并在距离蓝值(0 - 255)。  
//@ConstructorProperties(value={"red","green","blue","alpha"})
Color(int r, int g, int b, int a) //用指定的红、绿、蓝sRGB色彩创造,并在范围内的α值(0 - 255)。 

//成员变量
Color.black  //黑色
Color.blue   //蓝色
Color.gray   //灰色
Color.read   //红色
Color.yellow  //黄色

//常用方法
int getAlpha() //返回的alpha分量范围在0-255。  
int getBlue/Red/Green() 返回默认的sRGB空间范围在0-255的蓝色分量
getColor(String nm, Color v)在系统属性中查找颜色,第一个参数被视为要获得的系统属性的名称。
  • 实际案例:
new Color(255,255,255)  //白色 
  • Font类表示的字体,这是用来在一个可见的方式呈现文本;
//字体提供所需要的映射字符的顺序序列的字形和渲染在 Graphics和 Component对象符号序列的信息。
public class Font
extends Object
implements Serializable

//构造方法
Font(String name, int style, int size) //创建指定名称的一个新的 Font,样式和大小。 

//成员变量
// "PLAIN", "BOLD", "BOLDITALIC",或 "ITALIC" 
static int PLAIN //平原型类型
static int BOLD  //黑体加粗类型
static int ITALIC //斜体风格  
static String MONOSPACED //一个字符串常量的典型姓逻辑字体“等宽”。
static int LAYOUT_LEFT_TO_RIGHT //一个标志layoutglyphvector说明文字是从左到右的比迪烟分析确定。    

//成员方法

实际案例:

TextArea.setFont(new Font("xxx",Font.PLAIN,20)); //设置显示的字体大小

补充知识:

  • java平台两种字体之间的区别就是:物理和逻辑字体字体。
    • 物理字体包含字形数据和表格图从字符序列符号序列的实际字体库,使用字体技术如TrueType和PostScript Type 1,所有的java平台实现必须支持TrueType字体;其他字体技术支持是依赖于实现的。
    • 逻辑字体五字体家族的java平台必须在任何java运行环境支持的定义:衬线、SansSerif、等宽,对话框,和dialoginput,实际上逻辑字体不是实际的字体库,逻辑字体名称用java运行环境映射到物理字体;
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GUI界面开发
    • 1.GUI布局管理器
      • 2.GUI界面显示
        • 3.输入框
          • 4.按钮
          • 5.文本框
          • 6.面板
            • 7.颜色字体
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档