JAVA之简单界面设计(布局,更改背景图片,按钮监听 + 数据库登陆注册相关..)
2016-07-19 16:32
736 查看
先看一下简单的界面:
我把用户名和输入框作为一个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() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String 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 block
e.printStackTrace();
}
}
});
jb_e.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
new 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() {
@Override
public void actionPerformed(ActionEvent arg0) {
user = dia_user.getText().trim();
pass = dia_pass.getText();
passpass = dia_passpass.getText();
// TODO Auto-generated method stub
if(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 block
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, "注册成功");
dispose();
}
});
jb_reset.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
dia_user.setText("");
dia_pass.setText("");
dia_passpass.setText("");
}
});
}
}
public static void main(String[] agrs){
new test();
}
}
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() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub if(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() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub jt_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() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String 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 block
e.printStackTrace();
}
}
});
jb_e.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
new 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() {
@Override
public void actionPerformed(ActionEvent arg0) {
user = dia_user.getText().trim();
pass = dia_pass.getText();
passpass = dia_passpass.getText();
// TODO Auto-generated method stub
if(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 block
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, "注册成功");
dispose();
}
});
jb_reset.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
dia_user.setText("");
dia_pass.setText("");
dia_passpass.setText("");
}
});
}
}
public static void main(String[] agrs){
new test();
}
}
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android之获取手机上的图片和视频缩略图thumbnails
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- Android布局的小窍门?
- Web布局连载——两栏固定布局(五)
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序