I face a problem.I have created a sign up form in java with 3 buttons.LogIn,SignUp,and Place order which i have setEnabled(False).I want,in the loginframe which consists of id and psw,after the user provides system with correct id and psw,the PlaceOrder Button to be enables.How can i manage it;
Main Frame class
public class MainFrame extends JFrame{
private JButton loginButton;
private JButton signUpButton;
JButton placeOrderButton;
private boolean q;
private UserManager userManager;
public MainFrame(){
super("Main Panel");
userManager = new UserManager();
loginButton = new JButton("Login");
loginButton.addActionListener(new LoginButtonListener());
placeOrderButton = new JButton("Place Order");
placeOrderButton.addActionListener(new PlaceOrderButtonListener());
placeOrderButton.setEnabled(false);
signUpButton = new JButton("Sign Up");
signUpButton.addActionListener(new SignUpButtonListener());
this.getContentPane().add(loginButton, BorderLayout.LINE_START);
this.getContentPane().add(signUpButton, BorderLayout.CENTER);
this.getContentPane().add(placeOrderButton, BorderLayout.LINE_END);
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
class LoginButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent arg0) {
new LoginFrame(userManager);
}
}
class SignUpButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent arg0) {
new SignUpFrame(userManager);
}
}
class PlaceOrderButtonListener implements ActionListener {
public void actionPerformed(ActionEvent argO){
}
}
LoginFrame Class
public class LoginFrame extends JFrame{
private JButton loginButton;
private JTextField usernameField;
private JPasswordField password;
private UserManager userManager;
public LoginFrame(UserManager userManager){
super("Enter your credentials to login");
this.userManager = userManager;
loginButton = new JButton("Login");
loginButton.addActionListener(new LoginButtonListener());
usernameField = new JTextField(15);
password = new JPasswordField(15);
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new GridLayout(3,2));
mainPanel.add(new JLabel("Username:"));
mainPanel.add(usernameField);
mainPanel.add(new JLabel("Password:"));
mainPanel.add(password);
mainPanel.add(loginButton);
this.setContentPane(mainPanel);
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
class LoginButtonListener implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
String givenID = usernameField.getText();
if(userManager.isUserInList(givenID)){
String givenPass = password.getText();
User theUser = userManager.getUserWithID(givenID);
if(givenPass.equals(theUser.getPassword())){
dispose();
JOptionPane.showMessageDialog(null, "Access granted!");
}
else{
JOptionPane.showMessageDialog(null,
"Wrong Password",
"Error!",
JOptionPane.ERROR_MESSAGE);
}
}
else{
JOptionPane.showMessageDialog(null,
"Wrong username",
"Error!",
JOptionPane.ERROR_MESSAGE);
}
}
}
Class UserManager
import java.util.ArrayList;
public class UserManager {
private ArrayList<User> userList;
public UserManager(){
userList = new ArrayList<User>();
User u1 = new User("Teo Haik", "teo@uom.gr","teohaik","teopass");
userList.add(u1);
}
public boolean isUserInList(String ID){
for(User u: userList){
if(u.getUserID().equals(ID)){
return true;
}
}
return false;
}
public User getUserWithID(String ID){
for(User u: userList){
if(u.getUserID().equals(ID)){
return u;
}
}
return null;
}
public void addUser(User p){
if(!userList.contains(p)){
userList.add(p);
}
}
}
I can't understand your code , here is full working clean code : Hope it helps
Use as guide
package stackoverflow;
import java.awt.EventQueue;
public class Login {
private JFrame frame;
private JTextField txtusername;
private JPasswordField txtPassword;
private JButton btnPlaceorder;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Login window = new Login();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Login() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 341, 240);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JLabel lblUsername = new JLabel("Username:");
lblUsername.setBounds(21, 56, 52, 14);
frame.getContentPane().add(lblUsername);
JLabel lblPassword = new JLabel("Password");
lblPassword.setBounds(21, 94, 52, 14);
frame.getContentPane().add(lblPassword);
txtusername = new JTextField();
txtusername.setBounds(83, 53, 86, 20);
frame.getContentPane().add(txtusername);
txtusername.setColumns(10);
txtPassword = new JPasswordField();
txtPassword.setColumns(10);
txtPassword.setBounds(83, 91, 86, 20);
frame.getContentPane().add(txtPassword);
JButton btnNewButton = new JButton("Login");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (txtusername.getText().equals("admin") && new String(txtPassword.getPassword()).equals("admin")) {
btnPlaceorder.setEnabled(true);
} else {
btnPlaceorder.setEnabled(false);
}
}
});
btnNewButton.setBounds(10, 138, 89, 23);
frame.getContentPane().add(btnNewButton);
btnPlaceorder = new JButton("PlaceOrder");
btnPlaceorder.setEnabled(false);
btnPlaceorder.setBounds(105, 138, 89, 23);
frame.getContentPane().add(btnPlaceorder);
}
}
Here is fully working code now :
I have put a fix but your code is not well written. I've updated some stuff like password check just to test.
Main Frame Class
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class MainFrame extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JButton loginButton;
private JButton signUpButton;
private JButton placeOrderButton;
private boolean q;
private UserManager userManager;
private LoginFrame loginFrame;
public MainFrame() {
super("Main Panel");
userManager = new UserManager();
loginButton = new JButton("Login");
loginButton.addActionListener(new LoginButtonListener());
placeOrderButton = new JButton("Place Order");
placeOrderButton.addActionListener(new PlaceOrderButtonListener());
placeOrderButton.setEnabled(false);
signUpButton = new JButton("Sign Up");
signUpButton.addActionListener(new SignUpButtonListener());
this.getContentPane().add(loginButton, BorderLayout.LINE_START);
this.getContentPane().add(signUpButton, BorderLayout.CENTER);
this.getContentPane().add(placeOrderButton, BorderLayout.LINE_END);
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
loginFrame = new LoginFrame(this);
this.setVisible(true);
}
public void enableOrder() {
this.placeOrderButton.setEnabled(true);
}
class LoginButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
loginFrame.init(userManager);
}
}
class SignUpButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// new SignUpFrame(userManager);
}
}
class PlaceOrderButtonListener implements ActionListener {
public void actionPerformed(ActionEvent argO) {
}
}
}
Login Frame
import java.awt.GridLayout;
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.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class LoginFrame extends JFrame {
private JButton loginButton;
private JTextField usernameField;
private JPasswordField password;
private UserManager userManager;
private MainFrame mainFrame;
public LoginFrame(MainFrame mainFrame) {
super("Enter your credentials to login");
this.mainFrame = mainFrame;
}
public void init(UserManager userManager) {
loginButton = new JButton("Login");
loginButton.addActionListener(new LoginButtonListener());
usernameField = new JTextField(15);
password = new JPasswordField(15);
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new GridLayout(3, 2));
mainPanel.add(new JLabel("Username:"));
mainPanel.add(usernameField);
mainPanel.add(new JLabel("Password:"));
mainPanel.add(password);
mainPanel.add(loginButton);
this.userManager = userManager;
this.setContentPane(mainPanel);
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
class LoginButtonListener implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
String givenID = usernameField.getText();
if (userManager.isUserInList(givenID)) {
String givenPass = new String(password.getPassword());
User theUser = userManager.getUserWithID(givenID);
if (givenPass.equals("password")) {
dispose();
JOptionPane.showMessageDialog(null, "Access granted!");
mainFrame.enableOrder();
}
else {
JOptionPane.showMessageDialog(null, "Wrong Password", "Error!", JOptionPane.ERROR_MESSAGE);
}
} else {
JOptionPane.showMessageDialog(null, "Wrong username", "Error!", JOptionPane.ERROR_MESSAGE);
}
}
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.