扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
import java.awt.FlowLayout;
专注于为中小企业提供成都网站建设、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业淮安免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了超过千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Demo extends JFrame{
String username;
String password;
public Demo() {
username = "java";
password = "123";
setTitle("#####");
setSize(400, 300);
setLocation(400, 200);
setLayout(new FlowLayout());
JTextArea jta = new JTextArea(4,30);
jta.setText("请输入用户名密码:\n用户名:"+username+"\n密码:"+password);
jta.setEditable(false);//设置文本区域不可编辑
add(jta);
JLabel usernameLabel = new JLabel("用户名:");
final JTextField usernameText = new JTextField(10);
add(usernameLabel);
add(usernameText);
JLabel passwordLabel = new JLabel("密码:");
final JTextField passwordText = new JTextField(10);
add(passwordLabel);
add(passwordText);
JButton button = new JButton("登录");
add(button);
final JLabel result = new JLabel();//用来显示登录结果
add(result);
button.addActionListener(new ActionListener() {//登录按钮事件
@Override
public void actionPerformed(ActionEvent e) {
//获取输入的用户名密码
String tempUserName = usernameText.getText();
String tempPassWord = passwordText.getText();
if(tempUserName.equals(username)tempPassWord.equals(password)){
result.setText("登录成功");
}else{
result.setText("登录失败");
}
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new Demo();
}
}
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class Login {
private JFrame frame = new JFrame("登录");
private Container c = frame.getContentPane();
private JTextField username = new JTextField();
private JPasswordField password = new JPasswordField();
private JButton ok = new JButton("确定");
private JButton cancel = new JButton("取消");
public Login(){
frame.setSize(300,200);
c.setLayout(new BorderLayout());
initFrame();
frame.setVisible(true);
}
private void initFrame() {
//顶部
JPanel titlePanel = new JPanel();
titlePanel.setLayout(new FlowLayout());
titlePanel.add(new JLabel("系统管理员登录"));
c.add(titlePanel,"North");
//中部表单
JPanel fieldPanel = new JPanel();
fieldPanel.setLayout(null);
JLabel l1 = new JLabel("用户名:");
l1.setBounds(50, 20, 50, 20);
JLabel l2 = new JLabel("密 码:");
l2.setBounds(50, 60, 50, 20);
fieldPanel.add(l1);
fieldPanel.add(l2);
username.setBounds(110,20,120,20);
password.setBounds(110,60,120,20);
fieldPanel.add(username);
fieldPanel.add(password);
c.add(fieldPanel,"Center");
//底部按钮
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout());
buttonPanel.add(ok);
buttonPanel.add(cancel);
c.add(buttonPanel,"South");
}
public static void main(String[] args){
new Login();
}
}
概述
具体框架使用jframe,文本框组件:JTextField;密码框组件:JPasswordField;标签组件:JLabel;复选框组件:JCheckBox;单选框组件:JRadioButton;按钮组件JButton。
登录界面:
代码实例
import javax.swing.*;
import java.awt.*; //导入必要的包
public class denglu extends JFrame{
JTextField jTextField ;//定义文本框组件
JPasswordField jPasswordField;//定义密码框组件
JLabel jLabel1,jLabel2;
JPanel jp1,jp2,jp3;
JButton jb1,jb2; //创建按钮
public denglu(){
jTextField = new JTextField(12);
jPasswordField = new JPasswordField(13);
jLabel1 = new JLabel("用户名");
jLabel2 = new JLabel("密码");
jb1 = new JButton("确认");
jb2 = new JButton("取消");
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
//设置布局
this.setLayout(new GridLayout(3,1));
jp1.add(jLabel1);
jp1.add(jTextField);//第一块面板添加用户名和文本框
jp2.add(jLabel2);
jp2.add(jPasswordField);//第二块面板添加密码和密码输入框
jp3.add(jb1);
jp3.add(jb2); //第三块面板添加确认和取消
// jp3.setLayout(new FlowLayout()); //因为JPanel默认布局方式为FlowLayout,所以可以注销这段代码.
this.add(jp1);
this.add(jp2);
this.add(jp3); //将三块面板添加到登陆框上面
//设置显示
this.setSize(300, 200);
//this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setTitle("登陆");
}
public static void main(String[] args){
new denglu();
}
}
拓展内容
java swing包
Swing 是一个为Java设计的GUI工具包。
Swing是JAVA基础类的一部分。
Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表。
Swing提供许多比AWT更好的屏幕显示元素。它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT。它们是JFC的一部分。它们支持可更换的面板和主题(各种操作系统默认的特有主题),然而不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们。这意味着你可以在任意平台上使用JAVA支持的任意面板。轻量级组件的缺点则是执行速度较慢,优点就是可以在所有平台上采用统一的行为。
概念解析:
JFrame – java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大化、最小化、关闭。
JPanel – Java图形用户界面(GUI)工具包swing中的面板容器类,包含在javax.swing 包中,可以进行嵌套,功能是对窗体中具有相同逻辑功能的组件进行组合,是一种轻量级容器,可以加入到JFrame窗体中。。
JLabel – JLabel 对象可以显示文本、图像或同时显示二者。可以通过设置垂直和水平对齐方式,指定标签显示区中标签内容在何处对齐。默认情况下,标签在其显示区内垂直居中对齐。默认情况下,只显示文本的标签是开始边对齐;而只显示图像的标签则水平居中对齐。
JTextField –一个轻量级组件,它允许编辑单行文本。
JPasswordField – 允许我们输入了一行字像输入框,但隐藏星号(*) 或点创建密码(密码)
JButton – JButton 类的实例。用于创建按钮类似实例中的 "Login"。
界面代码写的不错 其实连数据库也不复杂。 如果希望不转换界面,登陆和登陆成功或失败后的信息在同意界面 可以设置个int类型的变量 来控制显示信息
下面是按你的要求写的 现实界面的转换 如果用户名和密码正确进入MyFrame1窗口 如果不正确进入MyFrame2窗口。
连数据库的时候先添加数据库驱动包,如果连接数据库有问题 多打印一下相关数据 很容易发现错误之处的
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class 登陆界面 extends JFrame {
private static final long serialVersionUID = 1L;
private JPasswordField passwordField;
private JTextField textField;
public static void main(String args[]) {
try {
登陆界面 frame = new 登陆界面();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Create the frame
*/
public 登陆界面() {
super();
getContentPane().setLayout(null);
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JButton button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String dir = "com.mysql.jdbc.Driver";//数据库驱动类,我这是MySQL的 ,连数据库记得导入驱动的jar包
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
try{
Class.forName(dir);
String url = "jdbc:mysql://localhost:3306/hospital?user=rootpassword=root";//数据库名 hospital用户名和密码都是root
conn = DriverManager.getConnection(url);
stat = conn.createStatement();
//得到用户名
String name = textField.getText().trim();
//得到密码
char[] pass = passwordField .getPassword();
String password = new String(pass);
//输出用户名密码
System.out.println(name);
System.out.println(password);
//数据库表user,字段用户名为username,密码password,都是varchar型
String sql = "select username,password from user where username = '" + name + "'";
rs = stat.executeQuery(sql.toString());
if(rs.next()){
//获得数据库里面的用户名和密码
String sname = rs.getString("username");
String spass = rs.getString("password");
//对输入的用户名和密码和数据库里的进行判断
if((rs != null ) (name.equals(sname)) (password.equals(spass))) {
//登陆成功释放登陆界面资源,显示a窗口
登陆界面.this.dispose();
new MyFrame1().launch();
System.out.println("chenggong");
} else {
//密码错误,显示b窗口
登陆界面.this.dispose();
new MyFrame2().launch();
System.out.println("mimacuowu");
}
} else {
//用户名错误和其他情况,显示b窗口
登陆界面.this.dispose();
new MyFrame2().launch();
System.out.println("yonghumingcuowu");
}
}catch(Exception e1){
//数据库连接失败,显示b窗口
登陆界面.this.dispose();
new MyFrame2().launch();
System.out.println("数据库连接错误");
}finally{
try{
if(rs!=null) rs.close();
if(stat!=null) stat.close();
if(conn!=null) conn.close();
}catch(Exception e1){
}
}
}
});
button.setText("确定");
button.setBounds(62, 273, 101, 25);
getContentPane().add(button);
final JButton button_1 = new JButton();
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {System.exit(0);
}
});
button_1.setText("取消");
button_1.setBounds(325, 273, 101, 25);
getContentPane().add(button_1);
final JLabel label = new JLabel();
label.setText("用户名");
label.setBounds(23, 60, 60, 15);
getContentPane().add(label);
final JLabel label_1 = new JLabel();
label_1.setText("密码");
label_1.setBounds(23, 172, 60, 15);
getContentPane().add(label_1);
textField = new JTextField();
textField.setBounds(48, 115, 90, 21);
getContentPane().add(textField);
passwordField = new JPasswordField();
passwordField.setBounds(42, 216, 96, 25);
getContentPane().add(passwordField);
}
}
class MyFrame1 extends Frame {
int orgX1;
int orgY1;
int orgX2;
int orgY2;
public void launch() {
setBounds(500,500,500,500);
setVisible(true);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
e.getWindow().dispose();
System.exit(0);
}
});
}
public void paint(Graphics g) {
//Color c =g.getColor();
g.setColor(Color.red);
g.drawLine(100, 50, 100, 80);
}
}
class MyFrame2 extends Frame {
int orgX1;
int orgY1;
int orgX2;
int orgY2;
public void launch() {
setBounds(500,500,500,500);
setVisible(true);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
e.getWindow().dispose();
System.exit(0);
}
});
}
public void paint(Graphics g) {
//Color c =g.getColor();
g.setColor(Color.red);
g.draw3DRect(100, 100, 100, 100,true);
}
}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
public class Test extends JFrame {
private JPanel contentPane;
private JTextField userField;
private JTextField pwdField;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Test frame = new Test();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Test() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 249, 227);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(null);
setContentPane(contentPane);
JLabel lblUsername = new JLabel("username");
lblUsername.setBounds(12, 13, 54, 15);
contentPane.add(lblUsername);
JLabel lblPassword = new JLabel("password");
lblPassword.setBounds(12, 38, 54, 15);
contentPane.add(lblPassword);
userField = new JTextField();
userField.setBounds(76, 10, 144, 21);
contentPane.add(userField);
userField.setColumns(10);
pwdField = new JTextField();
pwdField.setBounds(76, 35, 144, 21);
contentPane.add(pwdField);
pwdField.setColumns(10);
JButton btnNewButton = new JButton("登录");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
showPrint();
}
});
btnNewButton.setBounds(10, 92, 93, 23);
contentPane.add(btnNewButton);
JButton btnNewButton_1 = new JButton("注册");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
showPrint();
}
});
btnNewButton_1.setBounds(127, 92, 93, 23);
contentPane.add(btnNewButton_1);
JButton btnNewButton_2 = new JButton("忘记密码");
btnNewButton_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
showPrint();
}
});
btnNewButton_2.setBounds(12, 139, 93, 23);
contentPane.add(btnNewButton_2);
JButton btnNewButton_3 = new JButton("忘记帐号");
btnNewButton_3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
showPrint();
}
});
btnNewButton_3.setBounds(127, 139, 93, 23);
contentPane.add(btnNewButton_3);
}
public void showPrint(){
System.out.println("helloword");
}
}
eclipse 或 netbeans都有可视化开发,直接托就行了,
纠正你个错误,你自己不要在JFrame自己写一个show方法,因为会与JFrame的show方法重名,不改名等于覆写父类方法,除非你真的要复写此方法,否则会显示不出界面的,所以这里用 showPrint方法代替了你说的show方法
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流