欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java深入學(xué)習(xí)圖形用戶界面GUI之創(chuàng)建窗體

 更新時(shí)間:2022年05月07日 11:21:11   作者:遇安.112  
圖形編程中,窗口是一個(gè)重要的概念,窗口其實(shí)是一個(gè)矩形框,應(yīng)用程序可以使用其從而達(dá)到輸出結(jié)果和接受用戶輸入的效果,學(xué)習(xí)了GUI就讓我們用它來(lái)創(chuàng)建一個(gè)窗體

GUI全程是Graphical User Interface,即圖形用戶界面。顧名思義,GUI就是可以讓用戶直接操作的圖形化界面,包括窗口、菜單、按鈕、工具欄和其他各種圖形界面元素。目前,圖形用戶界面已經(jīng)成為一種趨勢(shì),幾乎所有的程序設(shè)計(jì)語(yǔ)言都提供了GUI設(shè)計(jì)功能。

Java針對(duì)GUI設(shè)計(jì)提供了豐富的類庫(kù),這些類分別位于java.awt和javax.swing包中,簡(jiǎn)稱為AWT和Swing。AWT引入了大量的Windows函數(shù),因此稱為中重量級(jí)組件。Swing是以AWT為基礎(chǔ)構(gòu)建起來(lái)的輕量級(jí)的圖形界面組件,在java的圖形界面開(kāi)發(fā)中使用更多,本文將對(duì)Swing相關(guān)知識(shí)進(jìn)行講解。

Swing概述:

Swing是Java語(yǔ)言開(kāi)發(fā)圖形化界面的一個(gè)工具包。它以抽象窗口工具包(AWT)為基礎(chǔ),使跨平臺(tái)應(yīng)用程序可以使用可插拔的外觀風(fēng)格。Swing擁有豐富的庫(kù)和組件,使用非常靈活,開(kāi)發(fā)人員只用很少的代碼就可以創(chuàng)建出良好的用戶界面。

在Java中,所有的Swing組件都保存在javax.swing包中,為了有效地使用Swing組件,必須了解Swing包的層次結(jié)構(gòu)和繼承關(guān)系。

Swing組件的所有類都繼承自Container類,然后根據(jù)GUI開(kāi)發(fā)的功能擴(kuò)展了兩個(gè)主要的分支,分別是容器分支和組件分支。其中,容器分支是為了實(shí)現(xiàn)圖形化用戶界面窗口的容器而設(shè)計(jì)的,而組件分支則是為了實(shí)現(xiàn)向容器中填充數(shù)據(jù)、元素和交互組件等功能。

在容器分支中,Swing組件類中有3個(gè)組件是繼承的AWT的Window類,而不是繼承自JComponent類,這3個(gè)組件是Swing中的頂級(jí)容器類,它們分別是JWindow、JFrame和JDialog。其中,JFrame和JDialog是最簡(jiǎn)單也是最常用的頂級(jí)容器,本文將對(duì)這兩種頂級(jí)容器的基本使用方法進(jìn)行詳細(xì)講解。

JFrame,它是一個(gè)獨(dú)立存在的頂級(jí)容器(也稱窗口),不能放置在其他容器中。JFrame支持通用窗口的所有基本功能,例如窗口最小化、設(shè)定窗口大小等。

JFrame案例:

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
public class GUI_1JFrame常用方法 extends JFrame {
    public static void main(String[] args) {
        //使用SwingUtilities工具調(diào)用createAndShowGUI()方法顯示GUI程序
        SwingUtilities.invokeLater(GUI_1JFrame常用方法::createAndShowGUI);
    }
    private static void createAndShowGUI() {
        //創(chuàng)建并設(shè)置JFrame容器窗口
        JFrame frame = new JFrame("JFrameText");
        //設(shè)置并關(guān)閉窗口時(shí)的默認(rèn)操作
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //設(shè)置窗口標(biāo)題
        frame.setTitle("窗口");
        //設(shè)置窗口尺寸
        frame.setSize(350, 300);
        //設(shè)置窗口顯示位置
        frame.setLocation(300, 200);
        //讓組件顯示
        frame.setVisible(true);
        //改變窗口圖標(biāo)
        Image image;
       try{ image= ImageIO.read(new File("圖片路徑"));
           frame.setIconImage(image);
       }catch (IOException e){
           e.printStackTrace();
       }
        //獲取標(biāo)題
       System.out.println(frame.getTitle());
 }
}

JDialog,它是Swing的另一個(gè)頂級(jí)容器,它與Dialog一樣都表示對(duì)話框窗口。JDialog對(duì)話框可分為兩種,分別是模態(tài)對(duì)話框和非模態(tài)對(duì)話框。模態(tài)對(duì)話框是指用戶需要處理完當(dāng)前對(duì)話框后才能繼續(xù)與其他窗口交互對(duì)話框,而非模態(tài)對(duì)話框是允許用戶處理對(duì)話框的同時(shí)與其他窗口交互的對(duì)話框。

JDialog案例:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class jdialog {
    public static void main(String[] args) {
        //建立兩個(gè)按鈕
        JButton btn1=new JButton("模態(tài)對(duì)話框");
        JButton btn2=new JButton("非模態(tài)對(duì)話框");
        //創(chuàng)建并設(shè)置JFrame容器窗口
        JFrame f=new JFrame("DialogDemo");
        //設(shè)置窗口尺寸
        f.setSize(300,250);
        //設(shè)置窗口顯示位置
        f.setLocation(300,200);
        f.setLayout(new FlowLayout());//為內(nèi)容面板設(shè)置布局管理器
        //在Container對(duì)象上添加按鈕
        f.add(btn1);
        f.add(btn2);
        //設(shè)置單擊關(guān)閉按鈕默認(rèn)關(guān)閉窗口
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //讓組件顯示
        f.setVisible(true);
        final JLabel label=new JLabel();
        //定義一個(gè)JDialog對(duì)話框
        final JDialog dialog=new JDialog(f,"Dialog");
        dialog.setSize(220,150);//設(shè)置對(duì)話框大小
        dialog.setLocation(350,250);//設(shè)置對(duì)話框位置
        dialog.setLayout(new FlowLayout());//設(shè)置布局管理器
        final JButton btn3=new JButton("確定");//創(chuàng)建按鈕對(duì)象
        dialog.add(btn3);//在對(duì)話框的內(nèi)容面板添加按鈕
        //為“模態(tài)對(duì)話框”按鈕添加單擊事件
        btn1.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //設(shè)置對(duì)話框?yàn)槟B(tài)
                dialog.setModal(true);
                //如果JDialog窗口中沒(méi)有添加JLabel標(biāo)簽,就把JLabel標(biāo)簽加上
                if(dialog.getComponents().length==1){
                    dialog.add(label);
                }
                //否則修改標(biāo)簽的內(nèi)容
                label.setText("模態(tài)對(duì)話框,單擊確定按鈕關(guān)閉");
                //顯示對(duì)話框
                dialog.setVisible(true);
            }
        });
        //為“非模態(tài)對(duì)話框”按鈕添加單擊事件
        btn2.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //設(shè)置對(duì)話框?yàn)榉悄B(tài)
                dialog.setModal(false);
                //如果JDialog窗口中沒(méi)有添加JLabel標(biāo)簽,就把JLabel標(biāo)簽加上
                if(dialog.getComponents().length==1){
                    dialog.add(label);
                }
                //否則修改標(biāo)簽的內(nèi)容
                label.setText("非模態(tài)對(duì)話框,單擊確定按鈕關(guān)閉");
                //顯示對(duì)話框
                dialog.setVisible(true);
            }
        });
        //為對(duì)話框中的按鈕添加單擊事件
        btn3.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                dialog.dispose();
            }
        });
    }
}

補(bǔ)充小知識(shí):JPanel

擴(kuò)展上面的JFrame案例

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
public class GUI_1常用方法 extends JFrame {
    public static void main(String[] args) {
        //使用SwingUtilities工具調(diào)用createAndShowGUI()方法顯示GUI程序
        SwingUtilities.invokeLater(GUI_1常用方法::createAndShowGUI);
    }
    private static void createAndShowGUI() {
        //創(chuàng)建并設(shè)置JFrame容器窗口
        JFrame frame = new JFrame("JFrameText");
        //設(shè)置并關(guān)閉窗口時(shí)的默認(rèn)操作
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //設(shè)置窗口標(biāo)題
        frame.setTitle("窗口");
        //設(shè)置窗口尺寸
        frame.setSize(350, 300);
        //設(shè)置窗口顯示位置
        frame.setLocation(300, 200);
        //讓組件顯示
        frame.setVisible(true);
        //改變窗口圖標(biāo)
        Image image;
       try{ image= ImageIO.read(new File("圖片路徑"));
           frame.setIconImage(image);
       }catch (IOException e){
           e.printStackTrace();
       }
        //獲取標(biāo)題
       System.out.println(frame.getTitle());
        //創(chuàng)建JPanel對(duì)象
        JPanel jp=new JPanel();
        //設(shè)置字體大小
        Font font=new Font("仿宋",Font.BOLD,20);
        //JLabel() ==>創(chuàng)建一個(gè)沒(méi)有圖像的 JLabel實(shí)例,標(biāo)題為空字符串。
        //JLabel(String text) ==>使用指定的文本創(chuàng)建一個(gè) JLabel實(shí)例。
        JLabel jl1=new JLabel("用戶名:");
        jl1.setFont(font);//設(shè)置統(tǒng)一的字體,看起來(lái)更美觀整齊
        //JTextField(String text) ==>構(gòu)造一個(gè)新的 TextField ,用指定的文本初始化。
        JTextField jf1=new JTextField("請(qǐng)輸入用戶名:",20);
        jf1.setFont(font);//設(shè)置統(tǒng)一的字體
        JLabel jl2=new JLabel("密碼:");
        jl2.setFont(font);//設(shè)置統(tǒng)一的字體
        JTextField jf2=new JTextField("請(qǐng)輸入密碼:",20);
        jf2.setFont(font);//設(shè)置統(tǒng)一的字體
        //建立按鈕
        JButton jb1=new JButton("登錄");
        jb1.setFont(font);//設(shè)置統(tǒng)一的字體
        JButton jb2=new JButton("退出");
        jb2.setFont(font);//設(shè)置統(tǒng)一的字體
        //將這些文本和按鈕添加到JPanel對(duì)象中,然后再將JPanel對(duì)象添加到JFrame對(duì)象中去
        jp.add(jl1);
        jp.add(jf1);
        jp.add(jl2);
        jp.add(jf2);
        jp.add(jb1);
        jp.add(jb2);
        frame.add(jp);
        //讓組件顯示
        frame.setVisible(true);
    }
}

到此這篇關(guān)于Java深入學(xué)習(xí)圖形用戶界面GUI之創(chuàng)建窗體的文章就介紹到這了,更多相關(guān)Java GUI創(chuàng)建窗體內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java內(nèi)存模型詳解

    Java內(nèi)存模型詳解

    JMM全稱Java Memory Model, 中文翻譯Java內(nèi)存模型,一種符合內(nèi)存模型規(guī)范的,屏蔽了各種硬件和操作系統(tǒng)的訪問(wèn)差異的,本詳細(xì)介紹了Java內(nèi)存模型,感興趣的同學(xué)可以參考一下
    2023-04-04
  • DoytoQuery中的關(guān)聯(lián)查詢方案示例詳解

    DoytoQuery中的關(guān)聯(lián)查詢方案示例詳解

    這篇文章主要為大家介紹了DoytoQuery中的關(guān)聯(lián)查詢方案示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 關(guān)于java方法區(qū)詳解

    關(guān)于java方法區(qū)詳解

    這篇文章主要介紹了關(guān)于java方法區(qū)的使用解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Java數(shù)據(jù)結(jié)構(gòu)之二叉搜索樹(shù)詳解

    Java數(shù)據(jù)結(jié)構(gòu)之二叉搜索樹(shù)詳解

    二叉搜索樹(shù)作為一個(gè)經(jīng)典的數(shù)據(jù)結(jié)構(gòu),具有鏈表的快速插入與刪除的特點(diǎn),同時(shí)查詢效率也很優(yōu)秀,所以應(yīng)用十分廣泛。本文將詳細(xì)講講二叉搜索樹(shù)的原理與實(shí)現(xiàn),需要的可以參考一下
    2022-06-06
  • 詳解spring中aop不生效的幾種解決辦法

    詳解spring中aop不生效的幾種解決辦法

    這篇文章主要介紹了詳解spring中aop不生效的幾種解決辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • SpringBoot web靜態(tài)資源配置詳解

    SpringBoot web靜態(tài)資源配置詳解

    這篇文章主要介紹了SpringBoot web靜態(tài)資源配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • mybatis二級(jí)緩存默認(rèn)未開(kāi)啟源碼的問(wèn)題

    mybatis二級(jí)緩存默認(rèn)未開(kāi)啟源碼的問(wèn)題

    這篇文章主要介紹了mybatis二級(jí)緩存默認(rèn)未開(kāi)啟源碼的問(wèn)題及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 大廠禁止SpringBoot在項(xiàng)目使用Tomcat容器原理解析

    大廠禁止SpringBoot在項(xiàng)目使用Tomcat容器原理解析

    這篇文章主要為大家介紹了大廠禁止SpringBoot在項(xiàng)目使用Tomcat原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • ssm?mybatis如何配置多個(gè)mapper目錄

    ssm?mybatis如何配置多個(gè)mapper目錄

    這篇文章主要介紹了ssm?mybatis如何配置多個(gè)mapper目錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • Java面向?qū)ο蠛蛢?nèi)存分析圖文詳解

    Java面向?qū)ο蠛蛢?nèi)存分析圖文詳解

    這篇文章主要給大家介紹了關(guān)于Java面向?qū)ο蠛蛢?nèi)存分析的相關(guān)資料,文章可以讓初學(xué)者順利的分析內(nèi)存,更加容易的體會(huì)程序執(zhí)行過(guò)程中內(nèi)存的變化,需要的朋友可以參考下
    2021-05-05

最新評(píng)論