Java图形界面

来源:互联网 发布:联想 没落 知乎 编辑:程序博客网 时间:2024/06/08 12:14

      具有图片背景的登录界面

三个类: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();
  }
  }
   }
}

 

运行结果如下:

1 0