国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

JAVA GUI自定義JPanel畫板背景

2019-11-26 13:22:21
字體:
供稿:網(wǎng)友

自定義JPanel面板背景

一、前言

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


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

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

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

二、平臺工具

1.MyEclipse

        此處演示使用myeclipse2014

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

三、圖文展示

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

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


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


  (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(){       //構造方法      jframe = new JFrame();      init();    }      private void init(){      jframe.setTitle("測試");      jpanel = new JPanel(){//關鍵代碼,就是重寫了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); //設置顯示位置距離左邊200像素距離上邊200像素及屏幕大小500*400            jframe.add(jpanel); //添加畫板到窗體            jframe.setVisible(true); //設置顯示界面    }      public static void main(String[] args) {       new GUITest();      // 實例化對象     } } 

 四、拓展布局管理器

下面簡單寫個登錄窗體:

 基于自定義的JPanel背景,設置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("登錄");     /**      * 設置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("注冊");        //設置顯示位置及屏幕大小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設計中布局是基礎也是十分重要的知識。

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 河间市| 平江县| 云梦县| 西乌珠穆沁旗| 瑞丽市| 明溪县| 泸水县| 黎川县| 邯郸市| 平顶山市| 昌黎县| 镇江市| 北票市| 泌阳县| 嘉鱼县| 若尔盖县| 陆河县| 蒲江县| 襄樊市| 射阳县| 沙河市| 双流县| 马边| 邹平县| 台北市| 新兴县| 镶黄旗| 全州县| 砚山县| 文安县| 蕲春县| 武冈市| 观塘区| 花莲市| 鄂托克旗| 资阳市| 铜陵市| 大化| 河南省| 鹤庆县| SHOW|