我有兩個窗口。一個登錄窗口(稱爲main;我仍然只是測試)和一個MainWindow。我正在從MS Access數據庫讀取登錄數據(用戶名,密碼)。該數據庫有四個表格,Customer,Accounts,Mortgage,CreditCard。目前爲止一切正常,但我試圖在成功登錄時將用戶的名字和姓氏傳遞給主窗口中的JLabel。我該怎麼做呢?用戶登錄時是否需要客戶索引?在我可以在幀之間傳遞它之前,是否需要將它存儲在數組中?如果是這樣,我該怎麼做?我仍然在學習,所以一個例子會很棒。使用java swing將數據庫存儲到數組中
我假設我的數組看起來像這樣?
Account accounts[] = new Account[2];
Customer people[] = new Customer[2];
CreditCard credit[] = new CreditCard[2];
Mortgage mortgage[] = new Mortgage[2];
int index = 0;
這是我的登錄類
import java.sql.*;
import javax.swing.*;
import java.awt.event.*;
public class Login extends JFrame
{
Connection con;
Statement st;
ResultSet rs;
JFrame f = new JFrame("User Login");
JLabel l = new JLabel("Username");
JLabel l1 = new JLabel("Password");
JTextField t = new JTextField(10);
JTextField t1 = new JTextField(10);
JButton b = new JButton("Login");
public Login()
{
connect();
frame();
}
public void connect()
{
try
{
//Connect to the database
con = DriverManager.getConnection("jdbc:ucanaccess://G:/JSProject/prjTIMS_JS/Bank.mdb");
st = con.createStatement();
System.out.println("Connected database successfully ...");
}
catch(Exception ex)
{
}
}
public void frame()
{
f.setSize(600,100);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
JPanel p = new JPanel();
p.add(l);
p.add(t);
p.add(l1);
p.add(t1);
p.add(b);
f.add(p);
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
try
{
String username = t.getText().trim();
String password = t1.getText().trim();
String sql = "select username, password from tblCustomer where username = '" +username+"'and password = '"+password+"'" ;
rs = st.executeQuery(sql);
int count = 0;
while(rs.next())
{
count ++;
}
if(count == 1)
{
setVisible(false);
new MainWindow();
}
else if(count > 1)
{
JOptionPane.showMessageDialog(null, "Duplicate User, Access Denied!");
}
else
{
JOptionPane.showMessageDialog(null, "User Not Found!");
}
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null, "Catch Error");
}
}
});
}
public static void main(String[] args) {
new Login();
}}
主窗口
import java.awt.*;
import java.awt.event.KeyEvent;
import javax.swing.*;
public class MainWindow extends JFrame {
MainWindow() {
//Create a new frame container
setTitle("Jo's Dealership: Main Menu");
//Give the frame an initial size and center the window
setSize(390, 270);
setLocationRelativeTo(null);
//Terminate the program when the user closes the application
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ImageIcon image = new ImageIcon("pc.png");
JLabel lblImage = new JLabel(image);
lblImage.setPreferredSize(new Dimension(48, 48));
JLabel lblOptionMsg = new JLabel(" choose an option below.");
lblOptionMsg.setFont(new Font("Helvetica", Font.PLAIN, 11));
lblOptionMsg.setForeground(new Color(37, 75, 124));
//Make two buttons
JButton okButton = new JButton ("OK");
okButton.setFont(new Font("Helvetica", Font.BOLD, 12));
okButton.setOpaque(false);
okButton.setPreferredSize(new Dimension(85, 22));
okButton.setForeground(new Color(37, 75, 124));
JButton cancelButton = new JButton ("Logout");
cancelButton.setFont(new Font("Helvetica", Font.BOLD, 12));
cancelButton.setOpaque(false);
cancelButton.setPreferredSize(new Dimension(85, 22));
cancelButton.setForeground(new Color(37, 75, 124));
JRadioButton buyButton = new JRadioButton("Buy Car", true);
buyButton.setMnemonic(KeyEvent.VK_B);
buyButton.setActionCommand("Buy");
buyButton.setFont(new Font("Helvetica", Font.BOLD, 11));
buyButton.setOpaque(true);
buyButton.setPreferredSize(new Dimension(120, 22));
buyButton.setForeground(new Color(37, 75, 124));
JRadioButton calcButton = new JRadioButton("Calculate Commission", true);
calcButton.setMnemonic(KeyEvent.VK_C);
calcButton.setActionCommand("Calculate");
calcButton.setFont(new Font("Helvetica", Font.BOLD, 11));
calcButton.setOpaque(true);
calcButton.setPreferredSize(new Dimension(200, 22));
calcButton.setForeground(new Color(37, 75, 124));
ButtonGroup bG = new ButtonGroup();
bG.add(buyButton);
bG.add(calcButton);
buyButton.setSize(100,200);
calcButton.setSize(100,200);
//Create text based label
JLabel lblMessage = new JLabel("[CustomerNameHere] is currently logged on.");
lblMessage.setFont(new Font("Helvetica", Font.PLAIN, 11));
lblMessage.setForeground(new Color(37, 75, 124));
//Add the panel to the content page
JPanel panel = new JPanel();
add(panel);
panel.setBackground(new Color(239, 239, 239));
//Display the frame
setVisible(true);
//Set the layout
SpringLayout layout = new SpringLayout();
panel.setLayout(layout);
//Add the label to the content pane
panel.add(lblImage);
panel.add(lblMessage);
panel.add(lblOptionMsg);
panel.add(okButton);
panel.add(cancelButton);
panel.add(buyButton);
panel.add(calcButton);
//Adjust constraints for the components
layout.putConstraint(SpringLayout.WEST, lblImage, 150, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.NORTH, lblImage, 50, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.WEST, lblMessage, 75, SpringLayout.WEST, panel); //right
layout.putConstraint(SpringLayout.NORTH, lblMessage, 10, SpringLayout.NORTH, panel); //top
layout.putConstraint(SpringLayout.WEST, okButton, 90, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.NORTH, okButton, 185, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.WEST, cancelButton, 195, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.NORTH, cancelButton, 185, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.WEST, buyButton, 95, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.NORTH, buyButton, 105, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.WEST, calcButton, 95, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.NORTH, calcButton, 135, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.WEST, lblOptionMsg, 105, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.NORTH, lblOptionMsg, 25, SpringLayout.NORTH, panel);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ex) {
ex.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
//new MainWindow(0).setVisible(true);
}
});
}
}
謝謝@blackbishop(!!!)工作得很好。我還有其他的表格添加了信息,所以我可以使用這個過程,並以這種方式傳遞我的數據? – jenayaalisa 2015-04-03 00:10:12
我跟着你的步驟來加載另一個表,但我正在碰到一個障礙。我有另一張桌子。示例:String sqlAccount =「SELECT custID,checkingAcctNum,savingsAcctNum,soarAcctNum FROM tblAccount ....我無法在MainWindow中傳遞firstName和lastName,並再次使用whosLoggedOn。我不知道如何將兩個表傳遞給主窗口,你能幫助我嗎?謝謝。 – jenayaalisa 2015-04-03 01:47:34
我試着查詢窗口將ResultSet傳遞給其他窗口,但我得到了「Catch error」消息。難道說我沒有正確地執行查詢?當我回到初次展示給我的方式時,一切都奏效了: - / – jenayaalisa 2015-04-16 06:18:35