从一个JFrame获取信息并将其放在另一个JFrame中

时间:2014-04-11 21:01:40

标签: java jframe jpanel

我正在尝试从我的** LoginBtnAction()方法获取 userNameFromLogin **变量,并将该显示放在我的 WelcomeFrame()的底部。我实际上遇到了一个问题,就是出现在 WelcomeFrame()上。有人可以指导我做错了什么,它编译,这将是一个逻辑错误。我将在下面发布我的代码。我在我的 LoginBtnAction()中使用的代码顶部声明了一个全局变量,称为私有静态字符串userNameFromLogin;

代码:

public void LoginFrame()
{
  //creates new frame with 'choiceFrame' variable
  loginFrame = new JFrame("Employee Login!");

  //sets size of frame
  loginFrame.setSize(215,125);

  //frame will close when you hit close button
  loginFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  //displays frame in middle of page
  loginFrame.setLocationRelativeTo(null);

  //initializes labels and what they will display
  userName = new JLabel("Username");
  password = new JLabel("Password");

  //initializes textfields and size
  userNameTextBox = new JTextField(10);
  passwordTextBox = new JPasswordField(10);

  //creates new panel, hold all components and displays them on frame
  JPanel loginPanel = new JPanel();

  //sets panel background to light gray
  loginPanel.setBackground(Color.lightGray);

  //adds label to panel
  loginPanel.add(userName);

  //sets textield background to light gray
  userNameTextBox.setBackground(Color.lightGray);

  //add textfieled 'employeeFnameTextbox' to panel
  loginPanel.add(userNameTextBox);

  //adds label to panel
  loginPanel.add(password);

  //sets textield background to light gray
  passwordTextBox.setBackground(Color.lightGray);

  //add textfieled 'employeeFnameTextbox' to panel
  loginPanel.add(passwordTextBox);

  //sets 'loginButton' background/foreground to light gray
  loginButton.setBackground(Color.lightGray);
  loginButton.setForeground(Color.darkGray);

  //adds button to panel
  loginPanel.add(loginButton);     

  //adds panel to frame   
  loginFrame.add(loginPanel);

  //sets 'welcomeFrame' to visible
  loginFrame.setVisible(true);  
}

/**
When the login button is pressed it does required actions 
*/
public void LoginBtnAction() 
{                                                                                 
  loginButton.addActionListener(
        new ActionListener()
        {
           //method for events that will be performed when 'loginButton' is pressed
           public void actionPerformed(ActionEvent e)
           {                   
              try
              {                   
                 //gets texts from specified text fields and assigns to instance variable
                 userNameFromLogin = userNameTextBox.getText().trim();
                 String password = passwordTextBox.getText().trim();

                 ArrayList<String> loginArray = new ArrayList<String>();
                 Date date= new Date(); 

                 //sql statement that check if username and password exist
                 String sql5 = "SELECT User_name,Password FROM Employee_Table WHERE User_name = '" + userName + "' and Password = '" + password + "'";

                 //execute query, assigning all records in db to 'rs5'
                 rs5 = st.executeQuery(sql5);

                 //instance variables
                 int count = 0;

                 //loops until reaches end up 'rs5'
                 while(rs5.next())
                 {
                    count++;
                 }

                 //statement and actions if 'userName' and 'password' match
                 if(count == 1)
                 {
                    welcomeFrame.setVisible(true);
                    loginFrame.setVisible(false);

                    userNameTextBox.setText("");
                    passwordTextBox.setText("");

                    loginArray.add(userNameFromLogin);
                    String timeStamp = ("User: " + loginArray.get(0) + "\n" + "Time Stamp: " + new Timestamp(date.getTime()));

                    JOptionPane.showMessageDialog(null, timeStamp, "User Log", JOptionPane.INFORMATION_MESSAGE);

                    userNameLabel.setText(userNameFromLogin);                       

                 }

                 //statement and actions if 'userName' and 'password' do not match 
                 else
                 {
                    JOptionPane.showMessageDialog(null, "Username or password incorrect!");
                    userNameTextBox.setText("");
                    passwordTextBox.setText("");
                 }   
              }

              catch(Exception ex)
              {

              }               
           }
        });
}

/**
Method that develops the Welcome Frame  
*/
public void WelcomeFrame()
{
  //creates new frame with 'welcomeFrame' variable
  welcomeFrame = new JFrame("Welcome!");

  //sets size of frame
  welcomeFrame.setSize(625,500);

  //frame will close when you hit close button
  welcomeFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  //displays frame in middle of page
  welcomeFrame.setLocationRelativeTo(null);

  //creates new panel, hold all components and displays them on frame
  JPanel welcomePanel = new JPanel();

  //sets welcomePanel to null
  welcomePanel.setLayout(null);

  //sets label to image                  
  bannerImage = new ImageIcon(getClass().getResource("moes.jpg"));
  bannerLabel = new JLabel(bannerImage);

  //sets location of image on panel
  bannerLabel.setBounds(0, 0, 610, 85);

  //adds image to panel
  welcomePanel.add(bannerLabel);

  //set label text
  versionLabel = new JLabel("current version: v4.0");

  //sets location of label on panel
  versionLabel.setBounds(485, 435, 120, 20);

  //add label to panel
  welcomePanel.add(versionLabel);

  //sets 'aboutTextArea' size and specs
  aboutTextArea = new JTextArea("This application is intended to benifit both the employees\n and most importantly"
                               +"the customers of Moes Barbeque");

  //sets textarea background to light gray
  aboutTextArea.setBackground(Color.lightGray);

  //sets location of textarea on panel
  aboutTextArea.setBounds(470, 80, 320, 300);

  //sets textarea visibility to false
  aboutTextArea.setVisible(false); 

  //add 'aboutTextArea' to panel
  welcomePanel.add(aboutTextArea);

  //sets panel background to light gray
  welcomePanel.setBackground(Color.white);

  //sets 'homeButton' background/foreground to light gray
  homeButton.setBackground(Color.white);
  homeButton.setForeground(Color.darkGray);

  //sets location of 'homeButton' on panel
  homeButton.setBounds(0, 120, 90, 20);

  //sets border of button to false
  homeButton.setBorderPainted(false);

  //adds button to panel
  welcomePanel.add(homeButton); 

  //sets 'employeeFormHomeButton' background/foreground to light gray
  employeeFormHomeButton.setBackground(Color.white);
  employeeFormHomeButton.setForeground(Color.darkGray);

  //sets location of 'employeeFormHomeButton' on panel
  employeeFormHomeButton.setBounds(0, 160, 145, 20);

  //sets border of button to false
  employeeFormHomeButton.setBorderPainted(false);

  //adds button to panel
  welcomePanel.add(employeeFormHomeButton); 

  //sets 'employeeSearchHomeButton' background/foreground to light gray
  employeeSearchHomeButton.setBackground(Color.white);
  employeeSearchHomeButton.setForeground(Color.darkGray);

  //sets location of 'employeeFormHomeButton' on panel
  employeeSearchHomeButton.setBounds(20, 190, 145, 20);

  //sets border of button to false
  employeeSearchHomeButton.setBorderPainted(false);

  //adds button to panel
  welcomePanel.add(employeeSearchHomeButton); 

  //sets 'customerFormHomeButton' background/foreground to light gray
  customerFormHomeButton.setBackground(Color.white);
  customerFormHomeButton.setForeground(Color.darkGray);

  //sets location of 'customerFormHomeButton' on panel
  customerFormHomeButton.setBounds(0, 230, 145, 20);

  //sets border of button to false
  customerFormHomeButton.setBorderPainted(false);

  //adds button to panel
  welcomePanel.add(customerFormHomeButton);

  //sets 'customerSearchHomeButton' background/foreground to light gray
  customerSearchHomeButton.setBackground(Color.white);
  customerSearchHomeButton.setForeground(Color.darkGray);

  //sets location of 'customerSearchHomeButton' on panel
  customerSearchHomeButton.setBounds(20, 260, 145, 20);

  //sets border of button to false
  customerSearchHomeButton.setBorderPainted(false);

  //adds button to panel
  welcomePanel.add(customerSearchHomeButton); 

  //sets 'aboutButton' background/foreground to light gray
  aboutButton.setBackground(Color.white);
  aboutButton.setForeground(Color.darkGray);

  //sets location of 'aboutButton' on panel
  aboutButton.setBounds(0, 300, 90, 20);

  //sets border of button to false
  aboutButton.setBorderPainted(false);

  //adds button to panel
  welcomePanel.add(aboutButton);  

  //sets 'logoutHomeButton' background/foreground to light gray
  logoutHomeButton.setBackground(Color.white);
  logoutHomeButton.setForeground(Color.darkGray);

  //sets location of 'logoutHomeButton' on panel
  logoutHomeButton.setBounds(0, 340, 90, 20);

  //sets border of button to false
  logoutHomeButton.setBorderPainted(false);

  //adds button to panel
  welcomePanel.add(logoutHomeButton); 

  userNameLabel.setBounds(300, 350, 120, 70);

  welcomePanel.add(userNameLabel);

  //adds panel to frame   
  welcomeFrame.add(welcomePanel);

  //sets 'welcomeFrame' to visible
  welcomeFrame.setVisible(false);
}   
/**
Performs the welcome button frame actions   
*/
public void WelcomeBtnAction() 
{                                                                                     
  homeButton.addActionListener(
        new ActionListener()
        {
           //method for events that will be performed when 'employeeFormButton' is pressed
           public void actionPerformed(ActionEvent e)
           {
              //sets 'welcomeFrame' visiblity to true
              welcomeFrame.setVisible(true);

              //sets size of frame
              welcomeFrame.setSize(625,500);

              //sets 'aboutTextArea' visibility to false
              aboutTextArea.setVisible(false);
           }
        });

  employeeFormHomeButton.addActionListener(
        new ActionListener()
        {
           //method for events that will be performed when 'employeeFormButton' is pressed
           public void actionPerformed(ActionEvent e)
           {
              employeeInputFrame.setVisible(true);
              welcomeFrame.setVisible(false);
           }
        });

  employeeSearchHomeButton.addActionListener(
        new ActionListener()
        {
           //method for events that will be performed when 'employeeFormButton' is pressed
           public void actionPerformed(ActionEvent e)
           {
              //sets 'searchFrame' to visible
              searchFrame.setVisible(true);

              //sets 'searchFrame' to different size when 'retrieveEmployeeButton' is pressed
              searchFrame.setSize(230,100);

              //sets 'employeeID' to visible 
              employeeID.setVisible(true);

              //sets 'employeeIDTextBox' to visible 
              employeeIDTextBox.setVisible(true);

              //sets 'employeeIDSearchButton' to visible 
              employeeIDSearchButton.setVisible(true);

              //sets 'customerID' to not visible
              customerID.setVisible(false);

              //sets 'customerIDTextBox' to not visible
              customerIDTextBox.setVisible(false);

              //sets 'customerIDSearchButton' to not visible
              customerIDSearchButton.setVisible(false);

              //sets 'welcomeFram; visibility to false
              welcomeFrame.setVisible(false);
           }
        });


  customerFormHomeButton.addActionListener(
        new ActionListener()
        {
           //method for events that will be performed when 'employeeFormButton' is pressed
           public void actionPerformed(ActionEvent e)
           {
              inputFrame.setVisible(true);
              welcomeFrame.setVisible(false);
           }
        });

  customerSearchHomeButton.addActionListener(
        new ActionListener()
        {
           //method for events that will be performed when 'employeeFormButton' is pressed
           public void actionPerformed(ActionEvent e)
           {
              //sets 'searchFrame' to visible
              searchFrame.setVisible(true);

              //sets 'searchFrame' to different size when 'retrieveEmployeeButton' is pressed
              searchFrame.setSize(230,100);

               //sets 'customerID' to visible
              customerID.setVisible(true);

              //sets 'customerIDTextBox' to visible
              customerIDTextBox.setVisible(true);

              //sets 'customerIDSearchButton' to visible
              customerIDSearchButton.setVisible(true);

              //sets 'customerID' to not visible
              employeeID.setVisible(false);

              //sets 'customerIDTextBox' to not visible
              employeeIDTextBox.setVisible(false);

              //sets 'customerIDSearchButton' to not visible
              employeeIDSearchButton.setVisible(false);

              //sets 'welcomeFrame' visibility to false
              welcomeFrame.setVisible(false);
           }
        });

  aboutButton.addActionListener(
        new ActionListener()
        {
           //method for events that will be performed when 'employeeFormButton' is pressed
           public void actionPerformed(ActionEvent e)
           {
              //sets size of frame
              welcomeFrame.setSize(820,500);

              //sets textarea visibility to true
              aboutTextArea.setVisible(true);
           }
        });


  logoutHomeButton.addActionListener(
        new ActionListener()
        {
           //method for events that will be performed when 'employeeFormButton' is pressed
           public void actionPerformed(ActionEvent e)
           {
              loginFrame.setVisible(true);
              welcomeFrame.setVisible(false);

              JOptionPane.showMessageDialog(null, "You have successfully logged out!");
           }
        });
}

我在 WelcomeFrame()中创建了一个JLabel,其中包含 userNameFromLogin 变量,然后我将其放在我的 welcomePanel 上,但是不管用。因此,如果有人可以指导我将这个变量放到 WelcomeFrame()的正确方向上,我会很感激。

旁注:我知道我不应该使用null布局并手动设置边界,但这就是在这个特定程序中提出的问题。

由于

1 个答案:

答案 0 :(得分:1)

当您调用以下代码时,userNameFromLogin没有任何值。该变量不可绑定,因此在更改值时,它不会更新字段的文本。

JLabel userNameLabel = new JLabel(userNameFromLogin);

您需要将此变量设置为JLabel组件,因此必须在JLabel userNameLabel方法之外声明字段WelcomeFrame(),并且在密码匹配时执行此操作userNameLabel.setText(userNameFromLogin);