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

JAVA GUI自定義JPanel畫板背景

 更新時間:2016年12月28日 14:49:07   作者:niaonao  
這篇文章主要為大家詳細介紹了JAVA GUI自定義JPanel畫板背景的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

自定義JPanel面板背景

一、前言

1.GUI全稱是Graphical User Interface,就是圖形用戶界面。JAVA的GUI應(yīng)用廣泛在我們生活中也很常見。很多應(yīng)用使用該GUI編程設(shè)計,像點擊QQ圖標(biāo)彈出對應(yīng)的登錄窗體。


一般程序與用戶的交互都基于對應(yīng)程序的運行界面。

2.JPanel面板是SWING下的一個面板容器類。該面板支持嵌套,可設(shè)置布局方式,設(shè)置不同的布局管理器可添加其他控件像JButton按鈕,JTextField文本框等。來設(shè)計完善一個程序界面窗體。

作為繪制面板支持setBackground()設(shè)置背景顏色的方法還遠遠不夠。這里實現(xiàn)自定義為JPanel設(shè)置圖片背景。

二、平臺工具

1.MyEclipse

        此處演示使用myeclipse2014

        其他支持java awt+swing平臺也可

三、圖文展示

1.同一窗體下做不同處理JPanel的效果

  (1)首先創(chuàng)建一個不加修飾的窗體,一般的普通默認jpanel界面效果如下:


  (2)簡單的設(shè)置背景顏色效果:


  (3)自定義處理后的JPanel下的窗體效果:

2.代碼實現(xiàn)

自定義JPanel背景處理,該圖片為bg.PNG,與測試類在同一路徑下,使用圖片注意使用相對路徑

import java.awt.Graphics; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
 
public class GUITest { 
   private static JFrame jframe; //聲明一個窗體 
   private JPanel jpanel;     //聲明一個畫板 
  
   public GUITest(){       //構(gòu)造方法 
     jframe = new JFrame(); 
     init(); 
   } 
  
   private void init(){ 
     jframe.setTitle("測試"); 
     jpanel = new JPanel(){//關(guān)鍵代碼,就是重寫了paint的一個方法 
        @Override 
        protected void paintComponent(Graphics g) { 
          super.paintComponent(g); 
          ImageIcon img = new ImageIcon(GUITest.class.getResource("bg.png"));  
         /** 
          * bg.PNG這個地方換成自己的圖片 
          * 此處使用的相對路徑,bg.png跟該測試類在同一路徑下 
          * 不過建議使用相對路徑避免使用絕對路徑 
          */ 
          img.paintIcon(this, g, 0, 0); 
        } 
     }; 
     jpanel.setOpaque(true); 
     jframe.setBounds(200, 200, 500, 400); //設(shè)置顯示位置距離左邊200像素距離上邊200像素及屏幕大小500*400 
      
     jframe.add(jpanel); //添加畫板到窗體 
      
     jframe.setVisible(true); //設(shè)置顯示界面 
   } 
  
   public static void main(String[] args) { 
      new GUITest();      // 實例化對象  
   } 
} 

 四、拓展布局管理器

下面簡單寫個登錄窗體:

 基于自定義的JPanel背景,設(shè)置GridBagLayout布局,添加按鈕文本框等基本控件實現(xiàn)的一個簡單登錄窗體。

(1)代碼如下:

import java.awt.Graphics; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.Insets; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JPasswordField; 
import javax.swing.JTextField; 
 
public class GUIT { 
  //聲明窗體,面板及控件 
  private static JFrame jframe; 
  private JLabel jlabel,jlabel1; 
  private GridBagLayout gridbag; 
  private GridBagConstraints constraints; 
  private JTextField jtfield1; 
  private JPasswordField jpfield1; 
  private JButton jbutton1,jbutton2,jbutton3; 
  private JPanel jpanel; 
   
  public GUIT(){ 
    jframe = new JFrame(); 
    jlabel = new JLabel(); 
    jlabel1 = new JLabel(); 
    jtfield1 = new JTextField(); 
    jpfield1 = new JPasswordField(); 
    gridbag = new GridBagLayout(); 
    jbutton1 = new JButton(); 
    jbutton2 = new JButton(); 
    jbutton3 = new JButton(); 
    init(); 
  } 
  
   /** 
   * init()初始化并顯示界面 
   */ 
  private void init(){ 
    jframe.setTitle("登錄"); 
    /** 
     * 設(shè)置JPanel背景 
     */ 
    jpanel = new JPanel(){ 
      @Override 
      protected void paintComponent(Graphics g) { 
        super.paintComponent(g); 
        ImageIcon img = new ImageIcon(GUITest.class.getResource("ddmbg.jpg")); 
        img.paintIcon(this, g, 0, 0); 
      } 
    }; 
    //為JLabel,JButton初始化文本 
    jlabel.setText("用戶名:"); 
    jlabel1.setText("密  碼:"); 
    jbutton1.setText("登錄"); 
    jbutton2.setText("退出"); 
    jbutton3.setText("注冊"); 
   
    //設(shè)置顯示位置及屏幕大小500*400 
    jframe.setBounds(450, 240, 400, 240); 
    //jpanel采用GridBagLayout布局管理器 
    jpanel.setOpaque(false); 
    jpanel.setLayout(gridbag); 
     
    //初始化用戶名label,并添加該控件到畫板 
    constraints = getGridBagConstraints(0,0,1,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(10,0,10,0),0,0); 
    gridbag.setConstraints(jlabel, constraints); 
    jpanel.add(jlabel); 
     
    //初始化用戶名文本框,并添加該組件到畫板 
    constraints = getGridBagConstraints(1,0,1,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(10,0,10,0),100,0); 
    gridbag.setConstraints(jtfield1, constraints); 
    jpanel.add(jtfield1); 
      
    //初始化密碼label 
    constraints = getGridBagConstraints(0,1,1,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(10,0,10,0),0,0); 
    gridbag.setConstraints(jlabel1, constraints); 
    jpanel.add(jlabel1); 
    
    //初始化密碼文本框 
    constraints = getGridBagConstraints(1,1,1,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(10,0,10,0),100,0); 
    gridbag.setConstraints(jpfield1, constraints); 
    jpanel.add(jpfield1); 
    
    //初始化注冊按鈕,并添加該控件到畫板 
    constraints = getGridBagConstraints(0,2,1,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(10,0,10,0),0,0); 
    gridbag.setConstraints(jbutton3, constraints); 
    jpanel.add(jbutton3); 
   
    //初始化登錄按鈕 
    constraints = getGridBagConstraints(1,2,1,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(10,0,10,0),0,0); 
    gridbag.setConstraints(jbutton1, constraints); 
    jpanel.add(jbutton1); 
   
    //初始化退出按鈕 
    constraints = getGridBagConstraints(2,2,1,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(10,0,10,0),0,0); 
    gridbag.setConstraints(jbutton2, constraints); 
    jpanel.add(jbutton2); 
     
    //添加畫板到窗體 
    jframe.add(jpanel); 
    //窗體初始化完成 
  } 
  
   private static GridBagConstraints getGridBagConstraints(int gridx,int gridy,int gridwidth,int gridheight,double weightx,double weighty,int anchor,int fill,Insets insets,int ipadx,int ipady){ 
     return new GridBagConstraints(gridx, gridy, gridwidth, gridheight, weightx, weighty, anchor, fill, insets, ipadx, ipady); 
   } 
  
   public static void main(String[] args) { 
     new GUIT(); 
     jframe.setVisible(true); 
   } 
} 

其中ddmbg為圖片名

(2)實現(xiàn)效果如圖所示:


GUI設(shè)計中布局是基礎(chǔ)也是十分重要的知識。

熟練使用掌握三大布局及其他布局管理器需要自己敲代碼練習(xí)了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java中的三種取整函數(shù)總結(jié)

    java中的三種取整函數(shù)總結(jié)

    下面小編就為大家?guī)硪黄猨ava中的三種取整函數(shù)總結(jié)。希望對大家有所幫助。一起跟隨小編過來看看吧,祝大家游戲愉快哦
    2016-11-11
  • java -jar命令的具體使用

    java -jar命令的具體使用

    java -jar命令是一種方便快捷地在命令行中運行Java可執(zhí)行jar文件的方法,本文主要介紹了java -jar命令的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 淺談Spring5 響應(yīng)式編程

    淺談Spring5 響應(yīng)式編程

    本篇文章主要介紹了淺談Spring5 響應(yīng)式編程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • java開發(fā)之Jdbc分頁源碼詳解

    java開發(fā)之Jdbc分頁源碼詳解

    這篇文章主要介紹了java開發(fā)之Jdb分頁源碼詳解,需要的朋友可以參考下
    2020-02-02
  • Mybatis-Plus自動填充更新操作相關(guān)字段的實現(xiàn)

    Mybatis-Plus自動填充更新操作相關(guān)字段的實現(xiàn)

    數(shù)據(jù)庫表中應(yīng)該都要有create_time、update_time字段;那么在開發(fā)中,對于這些共有字段的處理應(yīng)該要進行統(tǒng)一,這樣就可以簡化我們的開發(fā)過程。那么本文就對Mybatis-Plus中的字段自動填充進行記錄
    2021-11-11
  • Java 泛型詳解(超詳細的java泛型方法解析)

    Java 泛型詳解(超詳細的java泛型方法解析)

    這篇文章主要介紹了深入理解java泛型Generic,文中有非常詳細的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下,希望對你有幫助
    2021-07-07
  • Springboot+Vue+shiro實現(xiàn)前后端分離、權(quán)限控制的示例代碼

    Springboot+Vue+shiro實現(xiàn)前后端分離、權(quán)限控制的示例代碼

    這篇文章主要介紹了Springboot+Vue+shiro實現(xiàn)前后端分離、權(quán)限控制的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java中的信號量Semaphore詳細解讀

    Java中的信號量Semaphore詳細解讀

    這篇文章主要介紹了Java中的信號量Semaphore詳細解讀,Java信號量機制可以用來保證線程互斥,創(chuàng)建Semaphore對象傳入一個整形參數(shù),類似于公共資源,需要的朋友可以參考下
    2023-11-11
  • SpringBoot項目上高并發(fā)問題的解決方案

    SpringBoot項目上高并發(fā)問題的解決方案

    本章演示在springboot項目中的高并發(fā)demo,演示導(dǎo)致的問題,以及單機部署下的解決方案和集群部署下的解決方式以及分布式下的解決方案,文中通過圖文結(jié)合的方式講解的非常詳細,需要的朋友可以參考下
    2024-06-06
  • Java中的"找不到符號"錯誤解決辦法

    Java中的"找不到符號"錯誤解決辦法

    開發(fā)中遇到一個問題,當(dāng)我用idea開發(fā)工具將新的項目代碼從GitLab上面拉取下來,所有的Maven依賴也導(dǎo)入成功,然后啟動項目,結(jié)果報錯:java:找不到符號,這篇文章主要給大家介紹了關(guān)于Java中"找不到符號"錯誤的解決辦法,需要的朋友可以參考下
    2023-10-10

最新評論