1. 程式人生 > >GUI的基本使用方式之程式碼例項(一)

GUI的基本使用方式之程式碼例項(一)

作者:叄念

1.如何建立GUI(由小元件進行演示講解)

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Demo01 {
    public static void main(String[] args) {
        // 1.建立jFrame
        JFrame jFrame = new JFrame();
        /** 下面這一行程式碼的效果是:在使用者關閉視窗是把程式結束掉 */
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 2.建立一個元件(widget)—— 按鈕 JButton jButton = new JButton("按鈕名稱"); // 3.將元件(按鈕)新增到到jFrame(裡面的Pane)上 jFrame.getContentPane().add(jButton); // 4.設定尺寸並 顯示 jFrame.setSize(300, 300); jFrame.setVisible(true
); } }

執行後效果展示 :
這裡寫圖片描述

2.實現監聽事件

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Demo02 implements ActionListener {// 1.實現時間監聽 需要實現該介面(事件只會通知所有實現ActionListener介面的類)
    JButton jButton;

    public static
void main(String[] args) { Demo02 gui = new Demo02(); gui.go(); } public void go() { JFrame jFrame = new JFrame(); jButton = new JButton("按鈕名稱"); // 3.為按鈕進行註冊 jButton.addActionListener(this); jFrame.getContentPane().add(jButton); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jFrame.setSize(300, 300); jFrame.setVisible(true); } // 2.實現介面後需要重寫該方法(你希望要執行的事件) @Override public void actionPerformed(ActionEvent e) { //4.按鈕需要做的操作 jButton.setText("事件監聽,有使用者點選"); } }

點選後效果展示 :
這裡寫圖片描述

2.GUI簡單圖形繪製案例

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Demo03{
    public static void main(String[] args) {
        JFrame jFrame = new JFrame();
        /**繪製一個2D圖形(圓形)*/
//      jFrame.add(new JPanel() {
//          @Override
//          protected void paintComponent(Graphics g) {
//              g.setColor(Color.red);
//              g.fillOval(70, 70, 100, 100);
//          }
//      });

        /**繪製一個漸變色圓,拖動視窗可變色*/
        jFrame.add(new JPanel() {
            @Override
            protected void paintComponent(Graphics g) {
                Graphics2D g2d = (Graphics2D) g;

                //1.獲取隨機RGB三個引數,並製作顏色
                int red  = (int)(Math.random()*255);
                int green  = (int)(Math.random()*255);
                int blue  = (int)(Math.random()*255);
                Color startColor = new Color(red, green, blue);

                //2.再次獲取隨機RGB三個引數,並製作顏色
                red  = (int)(Math.random()*255);
                green  = (int)(Math.random()*255);
                blue  = (int)(Math.random()*255);
                Color endColor = new Color(red, green, blue);

                //3.製作漸變色
                GradientPaint gradientPaint = new GradientPaint(70, 70, startColor, 150,150,endColor);
                g2d.setPaint(gradientPaint);
                //4.畫圓
                g2d.fillOval(70, 70, 100, 100);
            }
        });

        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jFrame.setSize(300, 300);
        jFrame.setVisible(true);
    }


}

效果展示 :
這裡寫圖片描述

3.GUI的佈局

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Demo04 {
    JFrame jFrame;
    JLabel jLabel;

    public static void main(String[] args) {
        Demo04 event = new Demo04();
        event.go();
    }

    public void go() {
        jFrame = new JFrame();

        //1.建立若干元件
        JButton colorButton = new JButton("改變顏色");
        JButton lableButton = new JButton("改變lable文字");
        jLabel = new JLabel("這是一個JLabel");

        //2.為Button元件進行監聽註冊
        colorButton.addActionListener(new ColorListenner());
        lableButton.addActionListener(new LabelListenner());

        //3.將元件新增到jFrame上,並佈局顯示
        jFrame.add(BorderLayout.WEST,jLabel);
        jFrame.add(BorderLayout.EAST,lableButton);
        jFrame.add(BorderLayout.SOUTH, colorButton);
        jFrame.add(BorderLayout.CENTER, new JPanel() {
            @Override
            protected void paintComponent(Graphics g) {
                Graphics2D g2d = (Graphics2D) g;

                int red = (int) (Math.random() * 255);
                int green = (int) (Math.random() * 255);
                int blue = (int) (Math.random() * 255);
                Color startColor = new Color(red, green, blue);

                red = (int) (Math.random() * 255);
                green = (int) (Math.random() * 255);
                blue = (int) (Math.random() * 255);
                Color endColor = new Color(red, green, blue);

                GradientPaint gradientPaint = new GradientPaint(70, 70, startColor, 150, 150, endColor);
                g2d.setPaint(gradientPaint);
                g2d.fillOval(70, 70, 100, 100);
            }
        });

        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jFrame.setSize(500,500);
        jFrame.setVisible(true);
    }
    /**
     *內部類  LabelListenner,按鈕lableButton的事件
     */
    class LabelListenner implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            jLabel.setText("奧,點選!!!");
        }

    }
    /**
     *內部類  ColorListenner,按鈕colorButton的事件
     */
    class ColorListenner implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            jFrame.repaint();
        }

    }
}

效果展示 :
這裡寫圖片描述

相關推薦

GUI基本使用方式程式碼例項

作者:叄念 1.如何建立GUI(由小元件進行演示講解) import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButt

一個例子告訴你什麼是封裝,繼承和多型(C++ 程式碼例項)

add by WJB   date 2018/08/30 面向物件的三大特性:封裝,繼承和多型; 封裝:將事物擁有的屬性和動作隱藏起來,只保留特定的方法與外界聯絡。 繼承:子類可以擁有父類的屬性和方法; 多型:以說是“一個介面,多種實現”或者說是父類的引用變數可以指向

Spring源碼閱讀Springs-beans容器的基本實現

beans 閱讀 gin com -i add wid ans lock 一、Spring-beans Spring源碼閱讀之Springs-beans(一)容器的基本實現

C基本數據類型

C 數據類型 我們今天來開始學習 C 語言了,那麽 C 語言是最基礎的語言,學好 C 語言有助於我們以後更好的學習其他語言。那麽今天我們就來了解下 C 語言中的數據類型。 那麽什麽是數據類型呢?我們可以這樣來理解:數據類型可以理解為固定內存大小的別名,它是創建變量的模子。

GUI認識Tkinter

技術分享 設計 自身 src idle pre 標題欄 scl png 一、介紹 Tkinter是Python默認的GUI庫,我們經常使用的IDLE就是用Tkinter設計出來的,因此我們在使用的時候直接導入Tkinter模塊就好了。 1.特點:可移植性、靈活性高 2.構成

重構重構原則重構改善既有的程式碼設計重構原則

目錄 兩頂帽子 新增新功能 重構 為何重構 重構的難題 重構與設計 間接層和重構(間接層的價值) @(重構)[原則|操作|問題] 重構:對軟體內部結構的一種調整,目的是再不改變軟體的可觀察行為的前提下,提高其可理解性,降低其修改成本。

[學習筆記] 《程式碼整潔道》

[學習筆記] 《程式碼整潔之道》—第1章 整潔程式碼 程式設計:將需求明確到機器可以執行的細節程度 —> 程式碼 保持程式碼整潔:讓營地比你來時更乾淨! [學習筆記]《程式碼整潔之道》—第2章 有意義的命名 名副其實 說起來簡單,但這是很嚴肅的事!

Java學習路0714markDown標籤的簡單使用,Java環境配置、Java基本資料型別

1、markdown標籤的簡單使用 #的使用 *的使用 >的使用 =的使用 -的使用 圖片的新增 標題#的使用,#表示一級標題,##表示是二級標題,標題內容寫在#後面 這是一級標題 這是二級標題 這是三級標題

程式碼整潔道筆記

一、有意義的命名 1. 名副其實 名字能讓人理解變數是用來做什麼的,比如 daysSinceCreation比 d 用來表 示消逝的時間更好。 2. 避免誤導 不用具有特殊含義的詞語,比如list,

影象處理其他雜項MeanShift的目標跟蹤演算法opencv c++程式碼 VS2015+opencv3.2

//#include "stdafx.h" //#include "cv.h" //#include "highgui.h" #include<opencv.hpp> #define u_char unsigned char #define DIST 0.5 #define

HBase基本程式碼實現

Step 1: 載入設定 HConnection hTablePool = null; static Configuration conf =null; public HB

ARCore路-計算機視覺例項

  有了前面的基礎,我們接下來將親自編寫一個神經網路,我們力求程式碼簡潔並易於理解,效能則不是考慮的重點。當然,完完全全講清神經網路還是比較困難的,這需要一些前置知識,也不是我們關注的重點,我們的重點是利用神經網路來服務AR應用。在開始之前,我們再來看一下人類大腦的神經。

從零開始學 Web 移動Web螢幕相關基本知識,除錯,視口,螢幕適配

一、基礎知識 1、螢幕 移動裝置與PC裝置最大的差異在於螢幕,這主要體現在螢幕尺寸和螢幕解析度兩個方面。 通常我們所指的螢幕尺寸,實際上指的是螢幕對角線的長度(一般用英寸來度量)。 而解析度則一般用畫素來度量 px,表示螢幕水平和垂直方向的畫素數,例如 1920*1080 指的是螢幕垂直方向和水平方向分別

從零開始學 Web Vue.jsVue.js概述,基本結構,指令,事件修飾符,樣式

大家好,這裡是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 部落格園:http://www.cnblogs.com/lvonve/ CSDN:https://blog.csdn.net/lvonve/

Java開發程式碼規範MySQL資料庫——建表規約

文章通過學習《阿里巴巴Java開發手冊》整理 1。表達是否概念的欄位,必須使用is_xxx的方式命名,資料型別是unsigned tinyint(1表示是,0表示否) 說明:任何欄位如果為非負數,必須是unsigned。 例子:表達邏輯刪除的欄位名

IOS音訊1:採用四種方式播放音訊檔案AudioToolbox AVFoundation OpenAL AUDIO QUEUE

在本卷你可以學到什麼? 採用四種方法設計應用於各種場合的音訊播放器: 基於AudioToolbox.framework框架。播放系統聲音檔案。 基於AVFoundation.framework框架。播放多種音訊格式檔案。具有高階音訊播放器功能。如實時顯示進度、功率,控制音量

《大話設計模式》Java程式碼示例簡單工廠方法

簡單工廠模式(Simple Factory):也叫靜態工廠模式,就是建立一個工廠類,對實現了同一介面的一些類進行例項的建立。 package simplefactory; /** * 簡單工廠方法(Simple Factory) * 簡單運算工廠類 */ p

androidFresco框架--Fresco基本使用

當下最常用的圖片載入框架是:Gilde,Fresco,Picasso。Fresco是Facebook提供的開源圖片載入庫,它能夠從網路,本地儲存和Android資原始檔中載入圖片,且具有三級快取設計(2級記憶體,1級檔案)。Fresco中實現了各種載入過程以及載入後的圖片繪製

activiti自定義流程Spring整合activiti-modeler5.16例項:環境搭建

專案中需要整合activiti-modeler自定義流程,找了很多資料後,終於成功的跳轉到activiti-modeler流程設計介面,以下是記錄: 一、整合基礎:eclipse4.4.1、tomcat7、jdk1.7、mysql5.6.25、maven3.2.5、acti

臺Linux伺服器上安裝多個MySQL例項--使用mysqld_multi方式

(一)MySQL多例項概述例項是程序與記憶體的一個概述,所謂MySQL多例項,就是在伺服器上啟動多個相同的MySQL程序,執行在不同的埠(如3306,3307,3308),通過不同的埠對外提供服務。由於MySQL在一個例項下面可以建立多個數據庫,所以通常在一臺伺服器上只要安裝一個MySQL例項即可滿足使用。但