您的位置:首页 > 编程语言 > Java开发

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

2016-07-19 16:32 736 查看
先看一下简单的界面:



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();
}
}





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息