import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class MainFrame extends JFrame {
JLabel lbl1 = new JLabel("用戶名:");
JLabel lbl2 = new JLabel("密 碼:");
JTextField txt = new JTextField("admin",20);
JPasswordField pwd = new JPasswordField(20);
JButton btn = new JButton("登錄");
JPanel pnl = new JPanel();
private int error = 0;
public MainFrame(String title) throws HeadlessException {
super(title);
init();
}
private void init() {
this.setResizable(false);
pwd.setEchoChar('*');
pnl.add(lbl1);
pnl.add(txt);
pnl.add(lbl2);
pnl.add(pwd);
pnl.add(btn);
this.getContentPane().add(pnl);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if ("admin".equals(new String(pwd.getPassword()))){
pnl.removeAll();
JLabel lbl3 = new JLabel();
ImageIcon icon = new ImageIcon(this.getClass().getResource("pic.jpg"));
lbl3.setIcon(icon);
pnl.add(lbl3);
}
else{
if(error < 3){
JOptionPane.showMessageDialog(null,"密碼輸入錯誤,請再試一次");
error++;
}
else{
JOptionPane.showMessageDialog(null,"對不起,您不是合法用戶");
txt.setEnabled(false);
pwd.setEnabled(false);
btn.setEnabled(false);
}
}
}
});
}
public static void main(String[] args) {
MainFrame frm = new MainFrame("測試");
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setBounds(100, 100, 300, 120);
frm.setVisible(true);
}
}
隨手寫的, 沒調試圖片, 太麻煩
⑵ 用java語言寫一個用戶登陸界面
//這個是我寫的,裡面有連接資料庫的部分。你可以拿去參考一下
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.sql.*;
//throwsException
{
JLabellbl1=newJLabel("用戶名:");
JLabellbl2=newJLabel("密碼:");
JTextFieldtxt=newJTextField(5);
JPasswordFieldpf=newJPasswordField();
JButtonbtn1=newJButton("確定");
JButtonbtn2=newJButton("取消");
publicLoginFrm(){
this.setTitle("登陸");
JPaneljp=(JPanel)this.getContentPane();
jp.setLayout(newGridLayout(3,2,5,5));
jp.add(lbl1);
jp.add(txt);
jp.add(lbl2);
jp.add(pf);
jp.add(btn1);
jp.add(btn2);
btn1.addActionListener(this);
btn2.addActionListener(this);
}
publicvoidactionPerformed(ActionEventae){
if(ae.getSource()==btn1){
try{
Class.forName("com.mysql.jdbc.Driver");//mysql資料庫
Connectioncon=DriverManager.getConnection(
"jdbc:mysql://localhost/Car_zl","root","1");//資料庫名為Car_zl,密碼為1
System.out.println("com:"+con);
Statementcmd=con.createStatement();
Stringsql="select*fromuserwhereUser_ID='"
+txt.getText()+"'andUser_ps='"
+pf.getText()+"'";
ResultSetrs=cmd
.executeQuery(sql);//表名為user,user_ID和User_ps是存放用戶名和密碼的欄位名
if(rs.next()){
JOptionPane.showMessageDialog(null,"登陸成功!");
}else
JOptionPane.showMessageDialog(null,"用戶名或密碼錯誤!");
}catch(Exceptionex){
}
if(ae.getSource()==btn2){
System.out.println("1111111111111");
//txt.setText("");
//pf.setText("");
System.exit(0);
}
}
}
publicstaticvoidmain(Stringarg[]){
JFrame.(true);
LoginFrmfrm=newLoginFrm();
frm.setSize(400,200);
frm.setVisible(true);
}
}
⑶ JavaGUI——Java圖形用戶界面
GUI(Graphical User Interface,圖形用戶界面)是計算機操作界面的直觀形式,相較於命令行界面,圖形界面更易於用戶理解與操作。
Java圖形界面主要由AWT(Abstract Windows ToolKit,抽象窗口工具包)和Swing(AWT的擴展)兩個核心庫組成。AWT依賴於本地系統方法實現功能,屬重量級控制項,而Swing則完全由Java實現,增強了移植性,屬輕量級組件。
容器是組件的子類,用於將組件組織為整體結構。容器包括窗口(JFrame)、彈窗(JDialog)、面板(JPanel)、滾動面板(JScrollPanel)等四種類型。窗口(JFrame)為具有標題欄的框架,可獨立存在。彈窗(JDialog)則為自定義或標准對話框,JOptionPane提供快速創建對話框的靜態方法。
面板作為容器的一種,不能獨立存在,只能置於窗口中。面板用於容納其他組件,實現特定布局。滾動面板(JScrollPane)支持水平和垂直滾動視圖,文本區域、表格等組件可使用其包裹以實現滾動顯示。分隔面板(JSplitPane)將兩個組件通過水平/垂直分隔條分別左右或上下顯示,並可調整分隔區域大小。選項卡面板(JTabbedPane)允許用戶通過點擊標題在一組組件間切換顯示。
布局管理器控制組件在容器中的排列方式。流式布局(FlowLayout)按水平方向依次排列組件。網格布局(GridLayout)以矩形網格形式布置組件,一個網格中放置一個組件,組件自動撐滿網格。邊界布局(BorderLayout)將容器分為5個區域,每個區域放置一個組件。
基本組件如標簽(JLabel)、按鈕列表(JComboBox)、列表框(JList)、文本框(JTextField)、密碼框(JPasswordField)、文本區域(JTextArea)、進度條(JProgressBar)、滑塊(JSlider)等,用於展示文本、圖片、文本輸入與選擇、進度顯示等。復雜組件包括文件選取器(JFileChooser)、顏色選取器(JColorChooser)、菜單欄(JMenuBar)、工具欄(JToolBar)等,為用戶提供了更多功能。
事件監聽包括滑鼠監聽、鍵盤監聽、窗口監聽等。滑鼠監聽事件用於響應滑鼠操作,鍵盤監聽事件用於監聽按鍵輸入,窗口監聽事件則關注窗口的激活與關閉。