先看一下简单的界面:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.ImageObserver;
import java.awt.image.ImageProducer;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.WindowConstants;public class test extends JFrame{public test(){super("Login");Container con = getContentPane();ImageIcon img = new ImageIcon("ii.jpg");JLabel jll = new JLabel(img);jll.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());this.getLayeredPane().add(jll,new Integer(Integer.MIN_VALUE));((JPanel)con).setOpaque(false);///JPanel jp_up = new JPanel();jp_up.setOpaque(false);jp_up.setLayout(new FlowLayout(FlowLayout.CENTER));JLabel jl_user = new JLabel("用户名:");jl_user.setForeground(Color.yellow);final JTextField jt_user = new JTextField("",20);jt_user.setForeground(Color.BLUE);jp_up.add(jl_user);jp_up.add(jt_user);con.add(jp_up,BorderLayout.NORTH);JPanel jp_down = new JPanel();jp_down.setOpaque(false);jp_down.setLayout(new FlowLayout(FlowLayout.CENTER));JLabel jl_pass = new JLabel("密    码:");jl_pass.setForeground(Color.yellow);final JPasswordField jt_pass = new JPasswordField("",20);jt_pass.setForeground(Color.BLUE);jp_down.add(jl_pass);jp_down.add(jt_pass);con.add(jp_down,BorderLayout.CENTER);JPanel jp_button = new JPanel();jp_button.setOpaque(false);///JButton jb_login = new JButton("login");JButton jb_reset = new JButton("reset");jp_button.setLayout(new FlowLayout(FlowLayout.CENTER));jp_button.add(jb_login);jp_button.add(jb_reset);con.add(jp_button,BorderLayout.SOUTH);jb_login.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubif(jt_user.getText().equals("newnix") && jt_pass.getText().equals("xinwen")){JOptionPane.showMessageDialog(new JFrame(), "nihao");}else{JOptionPane.showMessageDialog(new JFrame(), "no");}}});jb_reset.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubjt_user.setText("");jt_pass.setText("");}});setVisible(true);setSize(img.getIconWidth(),img.getIconHeight());setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] agrs){new test();}
}

我把用户名和输入框作为一个panel,密码和输入框也是一个面板,按钮也是一个面板,最后加入到container容器里,用边界布局

所谓的用图片设置为背景的原理就是:

首先需要了解一下面板有好几层,最底层的面板是JRootPanel,包含GlassPanel,  LayeredPanel   , LayeredPanel  又包含ContentPanel,  JMenuBar

所以我们平时做的都只是在contentPanel操作的,我们把图片add到 LayeredPanel 上,再把ContentPanel设置为透明,如果又在ContentPanel上添加了其他panel,那么还需要把其他panel也要设置为透明。。。就是代码中标注有/的地方

import java.awt.BorderLayout;import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.Writer;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.MulticastSocket;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.URLConnection;
import java.net.UnknownHostException;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Iterator;
import java.util.Random;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;import java.sql.*;public class test extends JFrame{private JTextField jt_user = new JTextField("",20);private JPasswordField jt_pass = new JPasswordField("",20);private boolean flag = false;JButton jb_s = new JButton("Login");JButton jb_e = new JButton("Register");private Connection conn;public test(){init();try {Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");String url = "jdbc:sqlserver://127.0.0.1:11588;DatabaseName=test728";String user = "sa";String password = "123456";conn =  DriverManager.getConnection(url,user,password);} catch (Exception e) {// TODO: handle exception}jb_s.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubString user = jt_user.getText();String pass = jt_pass.getText();try {Statement sta = conn.createStatement();ResultSet set = sta.executeQuery("select *from dbo.StuInfo");while(set.next()){if(set.getString("username").equals(user)){if(set.getString("password").equals(pass)){flag = true;break;}}}if(flag == true){JOptionPane.showMessageDialog(null, "欢迎");flag = false;}else{JOptionPane.showMessageDialog(null, "用户名或密码错误");}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}});jb_e.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubnew dialogReg("注册页面");}});}public void init(){setTitle("Login");setLocationRelativeTo(null);Container con = getContentPane();JPanel jp = new JPanel();JPanel jp_up = new JPanel();JPanel jp_down = new JPanel();jp_up.setLayout(new FlowLayout());jp_down.setLayout(new FlowLayout());jp.setLayout(new FlowLayout());jb_s.setBackground(Color.GREEN);jb_e.setBackground(Color.RED);jp_up.add(new JLabel("用户名 :"));jp_up.add(jt_user);jp_down.add(new JLabel("密    码  :"));jp_down.add(jt_pass);jp.add(jb_s);jp.add(jb_e);jt_pass.setSize(20, 1);con.add(jp_up,"North");con.add(jp_down,"Center");con.add(jp,"South");setVisible(true);setSize(300,300);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public class dialogReg extends JFrame{Container con = getContentPane();JPanel jp1 = new JPanel();JPanel jp2 = new JPanel();JPanel jp_up = new JPanel();JPanel jp_down = new JPanel();JPanel jp_downdown = new JPanel();JButton jb_sure = new JButton("确定");JButton jb_reset = new JButton("重置");JTextField dia_user = new JTextField("",20);JPasswordField dia_pass = new JPasswordField("",20);JPasswordField dia_passpass = new JPasswordField("",20);String user;String pass;String passpass;public dialogReg(String s){setLocationRelativeTo(null);setBounds(500, 500, 400, 300);jp_up.setLayout(new FlowLayout());jp_down.setLayout(new FlowLayout());jp_downdown.setLayout(new FlowLayout());jp2.setLayout(new FlowLayout());jp1.setLayout(new GridLayout(3, 1));jb_sure.setBackground(Color.GREEN);jb_reset.setBackground(Color.RED);jp_up.add(new JLabel("用户名 :"));jp_up.add(dia_user);jp_down.add(new JLabel("密    码  : "));jp_down.add(dia_pass);jp_downdown.add(new JLabel("确认密 码  : "));jp_downdown.add(dia_passpass);jp2.add(jb_sure);jp2.add(jb_reset);jp1.add(jp_up);jp1.add(jp_down);jp1.add(jp_downdown);con.add(jp1,"North");con.add(jp2,"South");fun();setTitle(s);setVisible(true);//setSize(300,300);}public void fun(){jb_sure.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {user = dia_user.getText().trim();pass = dia_pass.getText();passpass = dia_passpass.getText();// TODO Auto-generated method stubif(user.equals("") || pass.equals("") || passpass.equals("")){JOptionPane.showMessageDialog(null, "用户名或者密码不能为空");return ;}if(!pass.equals(passpass)){JOptionPane.showMessageDialog(null, "密码不一致,请重新输入");dia_pass.setText("");dia_passpass.setText("");return ;}try {String sql = "insert into dbo.StuInfo (username,password) values(?,?)";PreparedStatement sta = conn.prepareStatement(sql);sta.setString(1, user);sta.setString(2, pass);sta.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}JOptionPane.showMessageDialog(null, "注册成功");dispose();}});jb_reset.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubdia_user.setText("");dia_pass.setText("");dia_passpass.setText("");}});}}public static void main(String[] agrs){new test();}
}

JAVA之简单界面设计(布局,更改背景图片,按钮监听 + 数据库登陆注册相关..)相关推荐

  1. java 网格布局管理器,Java图形化界面设计——布局管理器之GridLayout(网格布局)...

    网格布局特点: l  使容器中的各组件呈M行×N列的网格状分布. l  网格每列宽度相同,等于容器的宽度除以网格的列数. l  网格每行高度相同,等于容器的高度除以网格的行数. l  各组件的排列方式 ...

  2. java 多个监听_​Java中使用for循环对多个Jbutton按钮监听

    Java中Jbutton按钮监听,当多个按钮做的事差不多的时候是可以用for循环的(比如计算器1-9)省事省力. 监听时变量只能是final或者static,不过这些在for循环中明显不行,所以,就在 ...

  3. java卡片布局显示效果_三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)...

    摘自 http://blog.csdn.net/liujun13579/article/details/7773945 卡片布局能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像一叠牌,组 ...

  4. 三十、Java图形化界面设计——布局管理器之BorderLayout(边界布局)

    边界布局管理器把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH.SOUTH.依次对应为:上北(NORTH).下南(SOUTH).左西(WEST).右东(EAST),中(CENT ...

  5. 三十三、Java图形化界面设计——布局管理器之null布局(空布局)

    一般容器都有默认布局方式,但是有时候需要精确指定各个组建的大小和位置,就需要用到空布局. 操作方法: 1)       首先利用setLayout(null)语句将容器的布局设置为null布局(空布局 ...

  6. java 如何添加背景图片_JAVA界面设计怎么插入背景图片?

    展开全部 可以利用标签组件来设置. 具体方法如下: 利用标签组件来设置,具体代码如下: JPanelpnlMain=new JPanel(); //创建面板pnlMain. getContentPan ...

  7. Java开发关于UI界面_Android开发1:基本UI界面设计——布局和组件

    前言 啦啦啦~本学期要开始学习Android开发啦~ 博主在开始学习前是完完全全的小白,只有在平时完成老师要求的实验的过程中一步一步学习~从此篇博文起,博主将开始发布Android开发有关的博文,希望 ...

  8. Java图形化界面设计——容器(JFrame)

    Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...

  9. Java 图形化界面设计(GUI)实战练习(代码)

    关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例. 程序是为了方便用户使用的,Java引入图形化界面编程. 1.JFrame 是容器类 2.AWT 是抽象 ...

最新文章

  1. mysql select符合查询_数据库select group by 和having语句 多表连接查询 复合查询
  2. 消息队列软件产品大比拼
  3. ABP vNext中使用开源日志面板 LogDashboard
  4. java的一些题目,一些Java题目
  5. torchvision学习之torchvision.datasets
  6. 1用switch语句从控制台输入100以内的分数判断优秀,良好,及格不及格属于哪一个区间
  7. day01-pycharm快捷键
  8. 产品经理与交互设计师的对话——需求是如何变成产品原型的(转)
  9. 我学Delphi心得及笔记----内存(第七讲)
  10. c语言令牌桶原理,令牌桶算法及实现(二)
  11. 详细解析十大排序算法(js实现)
  12. XXXX软件项目系统测试报告
  13. 简化“复杂”的层级管理,实现团队作战式的目标协同
  14. Git报错remote: error: hook declined to update refs/heads/feature/XXX
  15. m118w重置墨粉_富士施乐 Fuji Xerox DocuPrint M118w/M118z墨盒换粉加粉详解
  16. c语言中floor有什么作用,floor函数?floor函数的使用方法?ceil函数?C语言 floor 函数...
  17. 用Python画小猪佩奇
  18. C++用random_shuffle打乱字符串数组顺序
  19. HCNA零基础入门视频教程-HCNP职场提升班-HCIE大神直通班
  20. 视频流快速处理技术之二——基于数据量波动特性的视频静止画面检测

热门文章

  1. Datawhale 《南瓜书》
  2. Delphi 的多线程
  3. 深入理解Linux多线程
  4. 设置计算机的启动顺序CDROM.C.A,bios如何设置光驱启动顺序?三种BIOS设置光驱第一启动的方法详细图解...
  5. C#调用Bartender模板打印.Net的SDK
  6. HTML强制关机,电脑死机如何强制关机重启
  7. 模块式柔性自动环形生产线及工厂智能机器人应用实验系统
  8. 微信小程序开发实战-第二周
  9. 计算机故障诊断与维修试卷B,数控机床故障诊断与维修试题及答案1
  10. 数据可视化知识点汇总