Java圖形界面

      具有圖片背景的登錄界面

三個類:LoginFrame  , LoginPane  ,BackGroundPane。

一張圖片:1.jpg,放到eclipse新建的images文件夾中

 

代碼:

1、
import javax.swing.JFrame;

import day18.LoginPane;   //根據新建不同的包選擇

public class LoginFrame extends JFrame {

 public LoginFrame() {
  // setLocation(400,500); //設置位置
  setLocationRelativeTo(null);// 居中
  setSize(500, 400);// 窗口尺寸大小
  setResizable(false);// 禁止調節窗口大小
  //setBounds(100, 522, 100, 120);// 設置位置和尺寸大小
  LoginPane lp = new LoginPane("images/1.jpg");
  setContentPane(lp);//替換原來的默認面板
 }

 public static void main(String[] args) {
  LoginFrame lf = new LoginFrame();//創建窗口對象  
  lf.setVisible(true);
         
 }
}

 

2、

import java.awt.Color;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

/**
 * 登錄面板 - 需要繼承JPanel才能成爲面板
 *
 */
public class LoginPane extends BackGroundPane{
 
 /**用戶名*/
 private JLabel usernameLb;
 /**密碼*/
 private JLabel passwordLb;
 /**用戶名輸入框*/
 private JTextField usernameTf;
 /**密碼輸入框*/
 private JPasswordField passwordPf;
 /**登錄按鈕*/
 private JButton loginBtn;
 /**重置按鈕*/
 private JButton resetBtn;

 public LoginPane(String imageUrl){
  super(imageUrl);
  
  setBackground(Color.GREEN);//設置背景顏色
  
  initComponents();//初始化組件
  layoutComponents();//佈局組件
 }
 /**
  * 初始化組件
  */
 private void initComponents(){
  usernameLb = new JLabel("用戶名");
  passwordLb = new JLabel("密碼");
  usernameTf = new JTextField();
  passwordPf = new JPasswordField();
  loginBtn = new JButton("登錄");
  resetBtn = new JButton("重置");
 }
 /**
  * 佈局組件
  */
 private void layoutComponents(){
  setLayout(null);//絕對定位佈局
  
  usernameLb.setBounds(80, 50, 50, 30);//設定組件的絕對位置和大小
  usernameTf.setBounds(150, 50, 150, 30);
  
  passwordLb.setBounds(80, 100, 50, 30);//設定組件的絕對位置和大小
  passwordPf.setBounds(150, 100, 150, 30);
  
  loginBtn.setBounds(100, 150, 80, 30);
  resetBtn.setBounds(200, 150, 80, 30);
  
  add(usernameLb);
  add(usernameTf);
  add(passwordLb);
  add(passwordPf);
  add(loginBtn);
  add(resetBtn);
 }
}

 

3、

import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JPanel;


/**
 * 具有背景的面板
 */
public class BackGroundPane extends JPanel {
 private String imageUrl;

 public BackGroundPane(String imageUrl) {
  super();
  this.imageUrl = imageUrl;
  
 }

 @Override
 protected void paintComponent(Graphics g) {
  super.paintComponent(g);
 
  if(null!=imageUrl){
   try {
   Image img = ImageIO.read(new File(imageUrl));
   g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
   } catch (IOException e) {
    e.printStackTrace();
  }
  }
   }
}

 

運行結果如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章