最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中GUI工具包AWT和Swing用法介紹

 更新時(shí)間:2022年01月24日 09:57:35   作者:癡者工良  
這篇文章介紹了Java中GUI工具包AWT和Swing用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

java 中編寫 GUI 有兩中工具包,分別為 AWT、Swing。

Swing 是 AWT 的拓展,Swing 具有比 AWT 豐富的組件和方法。

AWT 和 Swing 都能跨平臺(tái)使用;AWT 會(huì)隨著不同的系統(tǒng)平臺(tái),UI 樣式會(huì)有所變化,Swing 則不會(huì),設(shè)計(jì)完畢后在所有平臺(tái)下樣式一致。

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

一個(gè) awt 示例

下面是一個(gè)窗口示例

import java.awt.*;
public class MyFrame extends Frame {
    public  MyFrame(){
        super("測(cè)試");
        setSize(400,200);
        setVisible(true);
    }
    public  static  void Main(String args[]){
        new MyFrame();
    }
}

創(chuàng)建一個(gè)窗口,要繼承 Frame,同時(shí)會(huì)繼承 Frame 中的一些方法;

Frame 中:

  • super 方法可以設(shè)置窗口標(biāo)題;
  • setSize 設(shè)置窗口大小,(width,hight)
  • setVisible 設(shè)置是否顯示窗口,true 顯示,false 隱藏

setLayout(new FlowLayout());用于設(shè)置窗口布局;

add(組件); 用于向窗口添加組件,例如按鈕等。

我們來向窗口添加組件

import java.awt.*;
public class MyFrame extends Frame {
    public  MyFrame(){
        super("測(cè)試");

        setLayout(new FlowLayout());

        Button btn=new Button("Button");
        Font f=new Font("宋體",Font.BOLD,28);
        btn.setFont(f);
        add(btn);

        setSize(400,200);
        setVisible(true);
    }

在 main 方法中啟動(dòng)窗口

    public  static  void main(String args[]){
        new MyFrame();
    }

效果

事件

java 中,事件分為三個(gè)方面描述,

事件源:發(fā)生事件的對(duì)象

事件處理:委托事件處理模型

事件監(jiān)聽者:負(fù)責(zé)處理事件

首先B監(jiān)聽A,設(shè)置監(jiān)聽的內(nèi)容,并設(shè)置響應(yīng)內(nèi)容。

一旦A本身的狀態(tài)改變,就觸發(fā)C;

C執(zhí)行D

媽媽跟兒子說,你作業(yè)做完了,媽媽就讓爸爸就給你削個(gè)蘋果吃。

媽媽:事件監(jiān)控者

兒子:事件源

動(dòng)作:做完作業(yè)

事件:爸爸削個(gè)蘋果給兒子

媽媽監(jiān)控兒子,監(jiān)控是否完成作業(yè)。設(shè)置作業(yè)完成后,觸發(fā)事件:削蘋果;

兒子做完作業(yè),狀態(tài)變更,觸發(fā)事件;事件開始執(zhí)行。

簡單來說 B 告訴 A ,如果 A 怎么樣了,就去做一件事情C。

實(shí)現(xiàn)事件流程

我們繼續(xù)利用上面的窗口,實(shí)現(xiàn)按鈕點(diǎn)擊時(shí),改變窗口背景顏色。

實(shí)現(xiàn)一個(gè)事件

引入

import java.awt.event.ActionListener;

實(shí)現(xiàn)接口

class  Test implements  ActionListener{   
    public void actionPerformed(ActionEvent actionEvent) {
        System.out.println("執(zhí)行工作");
    }

將事件注冊(cè)到控件上

package com.company;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MyFrame extends Frame implements ActionListener {
    public  MyFrame(){
        super("測(cè)試");

        setLayout(new FlowLayout());

        Button btn=new Button("Button");
        Font f=new Font("宋體",Font.BOLD,28);
        btn.setFont(f);
        btn.addActionListener(this::actionPerformed);
        add(btn);
        setSize(400,200);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent actionEvent) {
        System.out.println("執(zhí)行工作");
        setBackground(Color.BLUE);
    }
}

按鈕有個(gè)事件監(jiān)聽器 addActionListener,我們將要執(zhí)行的工作 actionPerformed 綁定進(jìn)去。

當(dāng)條件發(fā)生時(shí),就會(huì)觸發(fā)此工作。

媽耶,我都不知道自己在說啥了。

C# 中,事件沒有那么麻煩,也不需要這么BB。。。

另外, actionEvent ,有兩個(gè)常用方法

        actionEvent.getActionCommand();		// 獲取對(duì)象名稱
        actionEvent.getSource()();			// 獲取源對(duì)象

布局

AWT 中,主要有 6 中布局方式。

  • FlowLayout 流式布局
    默認(rèn)布局,控件從上到下,從左到右地排序。
  • BorderLayout 邊緣布局
    自動(dòng)停靠窗體邊緣,并且長寬隨著窗體的變化。

  • GridLayout 網(wǎng)格布局
    將容器分成若干行和若干列。
  • CradLayout 卡片布局
    像撲克牌一樣,每張牌是一個(gè)控件,多個(gè)控件疊加起來,每次只能查看一個(gè)。
  • GridBagLayout 網(wǎng)格塊布局
  • null 采用坐標(biāo)定位布局

創(chuàng)建一個(gè)窗體,并設(shè)置流式布局

public class MyFrame extends Frame {
    public  MyFrame(){
        super("測(cè)試");
        setLayout(new FlowLayout());
		}
		}

繼承 Frame 的窗體中,使用 setLayout方法 可以設(shè)置布局。

組件方法

如圖是 GUI 控件中常用的控件關(guān)系繼承圖。

組件分為容器(Container)和控件。

容器又分為窗體(Window)和面板(Panel)。

Component 是所有組件的父類,Component 常用方法如下

Component類(抽象類)主要方法 
Color getBackground() : 獲取部件的背景色 
Font getFont() : 獲取部件的顯示字體 
Graphics getGraphics(): 獲取部件的Graphics屬性對(duì)象
void setBackground(Color c) : 設(shè)置部件的背景
void setEnabled(boolean b) : 是否讓部件功能有效 
void setFont(Font f) : 設(shè)置部件的顯示字體 
void setSize(int width,int height) : 設(shè)置部件大小 
void setVisible(boolean b) : 設(shè)置部件是否可見 
void setForeground(Color c) : 設(shè)置部件的前景色 
Tookit getToolkit() : 取得圖形部件的工具集(Toolkit) 
void requestFocus() : 讓部件得到焦點(diǎn) 
void add(PopupMenu popup) :給部件加入彈出菜單

常用控件

文本

文本框(TextField)只能顯示一行文本,文本域(TextArea)則可以顯示、編輯多行文字。

文本框的構(gòu)造函數(shù)如下

TextField():構(gòu)造一個(gè)單行文本輸入框。?
TextField(int):指定長度的單行文本輸入框。?
TextField(String):指定初始內(nèi)容的單行文本輸入框。
TextField(String, int):指定長度、指定初始內(nèi)容。

文本域的構(gòu)造函數(shù)如下

TextArea( ):構(gòu)造一個(gè)文本域。 
TextArea(int, int):構(gòu)造一個(gè)指定長度和寬度的文本域。 TextArea(String):構(gòu)造一個(gè)顯示指定文字的文本域。
TextArea(String, int, int):按指定長度、寬度和默認(rèn)值構(gòu)造文本域。

文本控件的常用方法有

void setEchoChar(‘*') 設(shè)置回顯字符 
String getText( ) :獲取輸入框中的數(shù)據(jù) 
void setText(String s) :往輸入框?qū)懭霐?shù)據(jù) 
boolean isEditable( ):判斷輸入框是否可編輯。 
void select(int start,int end):選定由開始和結(jié) 束位置指定的文本。 void selectAll( ):選定所有文本。 

文本域(TextArea)中,還具有以下兩個(gè)常用方法

append(String s):將字符串添加到文本域的末尾 
insert(String s,int index):將字符串插入到文本域的指定位置

文本框有兩個(gè)常用事件

  • ActionEvent事件

在文本框按回車鍵時(shí)引發(fā)

注冊(cè):addActionListener()

接口:ActionListener

方法:public void actionPerformed(ActionEvent e)

  • TextEvent事件

對(duì)文本輸入部件數(shù)據(jù)更改操作 (添加、修改、刪除)

注冊(cè):addTextListener()

接口:TextListener

方法:public void textValueChanged(TextEvent e)

到此這篇關(guān)于Java中GUI工具包AWT和Swing用法的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家

相關(guān)文章

  • springboot 無法掃描到父類模塊中Bean的原因及解決

    springboot 無法掃描到父類模塊中Bean的原因及解決

    這篇文章主要介紹了springboot 無法掃描到父類模塊中Bean的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Spring AOP使用接口方式實(shí)現(xiàn)

    Spring AOP使用接口方式實(shí)現(xiàn)

    本文主要介紹了Spring AOP使用接口方式實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java動(dòng)態(tài)線程池插件dynamic-tp集成過程淺析

    Java動(dòng)態(tài)線程池插件dynamic-tp集成過程淺析

    這篇文章主要介紹了Java動(dòng)態(tài)線程池插件dynamic-tp集成過程,dynamic-tp是一個(gè)輕量級(jí)的動(dòng)態(tài)線程池插件,它是一個(gè)基于配置中心的動(dòng)態(tài)線程池,線程池的參數(shù)可以通過配置中心配置進(jìn)行動(dòng)態(tài)的修改
    2023-03-03
  • MyBatis中常用的SQL語句詳解

    MyBatis中常用的SQL語句詳解

    MyBatis是一種優(yōu)秀的持久層框架,它支持定制化SQL、存儲(chǔ)過程以及高級(jí)映射,本文介紹了MyBatis中常用的SQL語句,包括基本查詢、多條件查詢、關(guān)聯(lián)查詢、分頁查詢、插入、更新、刪除等,并結(jié)合MyBatis的特性進(jìn)行了說明
    2025-03-03
  • 為什么不建議使用Java自定義Object作為HashMap的key

    為什么不建議使用Java自定義Object作為HashMap的key

    這篇文章主要介紹了為什么不建議使用Java自定義Object作為HashMap的key,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-06-06
  • 從零搭建SpringBoot+MyBatisPlus快速開發(fā)腳手架

    從零搭建SpringBoot+MyBatisPlus快速開發(fā)腳手架

    這篇文章主要為大家介紹了從零搭建SpringBoot+MyBatisPlus快速開發(fā)腳手架示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 三種Java求最大值的方法

    三種Java求最大值的方法

    本篇文章給大家總結(jié)了在JAVA中求最大值的三種常用方法,以及代碼做了分享,需要的朋友參考下。
    2018-02-02
  • java實(shí)現(xiàn)導(dǎo)出Excel的功能

    java實(shí)現(xiàn)導(dǎo)出Excel的功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)導(dǎo)出Excel的功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • JVM實(shí)戰(zhàn)系列之CPU100%和內(nèi)存100%排查

    JVM實(shí)戰(zhàn)系列之CPU100%和內(nèi)存100%排查

    本文主要介紹了JVM實(shí)戰(zhàn)系列之CPU100%和內(nèi)存100%排查,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • JAVA Web.xml加載順序過程詳解

    JAVA Web.xml加載順序過程詳解

    這篇文章主要介紹了JAVA Web.xml加載順序過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12

最新評(píng)論

南部县| 信丰县| 晋城| 乌兰县| 定襄县| 南投市| 天镇县| 鄯善县| 手游| 大埔区| 陇南市| 新宁县| 陆丰市| 龙山县| 五寨县| 白河县| 忻城县| 绍兴市| 太白县| 沐川县| 五寨县| 江安县| 山阴县| 舞钢市| 达拉特旗| 巴彦县| 武威市| 汶上县| 石泉县| 盘锦市| 永顺县| 永仁县| 新昌县| 资源县| 黄陵县| 怀远县| 沙洋县| 玉林市| 甘泉县| 静宁县| 福贡县|