import?java.awt.FlowLayout;
專注于為中小企業(yè)提供成都網(wǎng)站建設、網(wǎng)站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)淮安免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
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);//設置文本區(qū)域不可編輯
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();//用來顯示登錄結(jié)果
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("系統(tǒng)管理員登錄"));
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; //創(chuàng)建按鈕
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();
}
}
拓展內(nèi)容
java swing包
Swing 是一個為Java設計的GUI工具包。
Swing是JAVA基礎類的一部分。
Swing包括了圖形用戶界面(GUI)器件如:文本框,按鈕,分隔窗格和表。
Swing提供許多比AWT更好的屏幕顯示元素。它們用純Java寫成,所以同Java本身一樣可以跨平臺運行,這一點不像AWT。它們是JFC的一部分。它們支持可更換的面板和主題(各種操作系統(tǒng)默認的特有主題),然而不是真的使用原生平臺提供的設備,而是僅僅在表面上模仿它們。這意味著你可以在任意平臺上使用JAVA支持的任意面板。輕量級組件的缺點則是執(zhí)行速度較慢,優(yōu)點就是可以在所有平臺上采用統(tǒng)一的行為。
概念解析:
JFrame?– java的GUI程序的基本思路是以JFrame為基礎,它是屏幕上window的對象,能夠最大化、最小化、關閉。
JPanel?– Java圖形用戶界面(GUI)工具包swing中的面板容器類,包含在javax.swing 包中,可以進行嵌套,功能是對窗體中具有相同邏輯功能的組件進行組合,是一種輕量級容器,可以加入到JFrame窗體中。。
JLabel?– JLabel 對象可以顯示文本、圖像或同時顯示二者。可以通過設置垂直和水平對齊方式,指定標簽顯示區(qū)中標簽內(nèi)容在何處對齊。默認情況下,標簽在其顯示區(qū)內(nèi)垂直居中對齊。默認情況下,只顯示文本的標簽是開始邊對齊;而只顯示圖像的標簽則水平居中對齊。
JTextField?–一個輕量級組件,它允許編輯單行文本。
JPasswordField?– 允許我們輸入了一行字像輸入框,但隱藏星號(*) 或點創(chuàng)建密碼(密碼)
JButton?– JButton 類的實例。用于創(chuàng)建按鈕類似實例中的 "Login"。
界面代碼寫的不錯 其實連數(shù)據(jù)庫也不復雜。 如果希望不轉(zhuǎn)換界面,登陸和登陸成功或失敗后的信息在同意界面 可以設置個int類型的變量 來控制顯示信息
下面是按你的要求寫的 現(xiàn)實界面的轉(zhuǎn)換 如果用戶名和密碼正確進入MyFrame1窗口 如果不正確進入MyFrame2窗口。
連數(shù)據(jù)庫的時候先添加數(shù)據(jù)庫驅(qū)動包,如果連接數(shù)據(jù)庫有問題 多打印一下相關數(shù)據(jù) 很容易發(fā)現(xiàn)錯誤之處的
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";//數(shù)據(jù)庫驅(qū)動類,我這是MySQL的 ,連數(shù)據(jù)庫記得導入驅(qū)動的jar包
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
try{
Class.forName(dir);
String url = "jdbc:mysql://localhost:3306/hospital?user=rootpassword=root";//數(shù)據(jù)庫名 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);
//數(shù)據(jù)庫表user,字段用戶名為username,密碼password,都是varchar型
String sql = "select username,password from user where username = '" + name + "'";
rs = stat.executeQuery(sql.toString());
if(rs.next()){
//獲得數(shù)據(jù)庫里面的用戶名和密碼
String sname = rs.getString("username");
String spass = rs.getString("password");
//對輸入的用戶名和密碼和數(shù)據(jù)庫里的進行判斷
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){
//數(shù)據(jù)庫連接失敗,顯示b窗口
登陸界面.this.dispose();
new MyFrame2().launch();
System.out.println("數(shù)據(jù)庫連接錯誤");
}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都有可視化開發(fā),直接托就行了,
糾正你個錯誤,你自己不要在JFrame自己寫一個show方法,因為會與JFrame的show方法重名,不改名等于覆寫父類方法,除非你真的要復寫此方法,否則會顯示不出界面的,所以這里用?showPrint方法代替了你說的show方法