Java Swing JFrame按钮动作侦听器不工作

Java Swing JFrame按钮动作侦听器不工作,java,swing,jframe,jbutton,actionlistener,Java,Swing,Jframe,Jbutton,Actionlistener,按JButton命名为login后,我想从一个JFrame移动到另一个JFrame。我在下面附上我的两个框架代码,如果有更正或任何人想给我指示或指南,那么可以给我 import java.awt.Dimension; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class Login

JButton
命名为
login
后,我想从一个
JFrame
移动到另一个
JFrame
。我在下面附上我的两个框架代码,如果有更正或任何人想给我指示或指南,那么可以给我

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Login implements ActionListener {
private JFrame jFrame = null;  
private JPanel jContentPane = null;
private JLabel id = null;
private JTextField userid = null;
private JLabel pass = null;
private JPasswordField password = null;
private JButton login = null;       
    private JFrame getJFrame() 
    {
        if (jFrame == null) 
        {
            jFrame = new JFrame();
    jFrame.setSize(new Dimension(346, 301));
            jFrame.setResizable( false );
    jFrame.setTitle("Shree Datta Digambar");
            jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jFrame.setContentPane(getJContentPane());
        }
        return jFrame;
}
    private JPanel getJContentPane() 
    {
        if (jContentPane == null) 
        {
            pass = new JLabel();
    pass.setBounds(new Rectangle(21, 105, 116, 27));
        pass.setText("Password");
    id = new JLabel();
            id.setBounds(new Rectangle(21, 54, 119, 26));
    id.setText("Enter User Id");
            jContentPane = new JPanel();
    jContentPane.setLayout(null);
    jContentPane.add(id, null);
    jContentPane.add(getUserid(), null);
            jContentPane.add(pass, null);
    jContentPane.add(getPassword(), null);
    jContentPane.add(getLogin(), null);
        }
        return jContentPane;
}
    private JTextField getUserid() 
    {
        if (userid == null) 
        {
            userid = new JTextField();
    userid.setBounds(new Rectangle(164, 53, 140, 26));
        }
        return userid;
}   
private JPasswordField getPassword() 
    {
        if (password == null) 
        {
            password = new JPasswordField();
    password.setBounds(new Rectangle(165, 106, 137, 27));
        }
        return password;
}
private JButton getLogin() 
    {
        if (login == null) 
        {
            login = new JButton();
    login.setBounds(new Rectangle(165, 169, 136, 27));
    login.setText("Login");
            login.addActionListener((ActionListener) this);
        }
        return login;
}

public static void main(String[] args) 
    {
        Login l=new Login();
        JFrame f=new JFrame();           
        f=l.getJFrame();
        f.setLocation(300,150);
        f.setVisible(true);
    }
    public void actionPerformed(ActionEvent e) 
    {
        if(e.getSource()==login)
        {
            if(userid.getText().equals("")||password.getText().equals(""))
            {
                JOptionPane.showMessageDialog(null, "Please Enter Details");
            }
            else
            {
                if(userid.getText().equals("digambar")&&password.getText().equals("dalvi"))
                {                                 
                    JOptionPane.showMessageDialog(null,"Welcome To Customer Details of Papers");
                    getJFrame().dispose();  
                    JMenuBar menuBar = new JMenuBar();
                    MainMenu f = new MainMenu();                              
                }
                else
                {
                    JOptionPane.showMessageDialog(null,"Sorry Please Enter Valid Details");
                    userid.setText("");
                    password.setText("");
                }
            }
        }

    }       
}
第二帧代码是

       import java.awt.event.ActionEvent;
       import java.awt.event.ActionListener;
       import javax.swing.JFrame;
       import javax.swing.JMenu;
       import javax.swing.JMenuBar;
       import javax.swing.JMenuItem;
       public class MainMenu extends JFrame implements ActionListener
       {  
public static void main(String[] args) 
{
    MainMenu f=new MainMenu();
    f.setVisible(true);
    f.setSize(646,401);
    f.setResizable( false );
    f.setTitle("Shree Datta Digambar");
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JMenuBar menuBar = new JMenuBar();
    f.setJMenuBar(menuBar);

    JMenu customer=new JMenu("Customer");
    menuBar.add(customer);
    JMenu paper=new JMenu("Paper");
    menuBar.add(paper);
    JMenu edit=new JMenu("Edit");
    menuBar.add(edit);              
    JMenu view=new JMenu("View");
    menuBar.add(view); 
    JMenu bill=new JMenu("Bill");
    menuBar.add(bill);
    JMenu help=new JMenu("Help");
    menuBar.add(help);

    JMenuItem newItem = new JMenuItem("New Customer");
    customer.add(newItem);
    JMenuItem deleteItem = new JMenuItem("Delete Customer");
    customer.add(deleteItem);

    JMenuItem addpaperItem = new JMenuItem("Add Paper");
    paper.add(addpaperItem);
    JMenuItem deletepaperItem = new JMenuItem("Delete Paper");
    paper.add(deletepaperItem);

    JMenuItem customer_detail = new JMenuItem("Customer Detail");
    edit.add(customer_detail);
    JMenuItem paper_detail = new JMenuItem("Paper Detail");
    edit.add(paper_detail);

    JMenuItem perticular_customer_detail = new JMenuItem("Perticular Customer Detail");
    view.add(perticular_customer_detail);

    JMenuItem customer_bill = new JMenuItem("Customer Bills");
    bill.add(customer_bill);

    newItem.addActionListener(new MainMenu());
    deleteItem.addActionListener(new MainMenu());
    addpaperItem.addActionListener(new MainMenu());
    deletepaperItem.addActionListener(new MainMenu());
    customer_detail.addActionListener(new MainMenu());
    paper_detail.addActionListener(new MainMenu());
    perticular_customer_detail.addActionListener(new MainMenu());
    customer_bill.addActionListener(new MainMenu());

    customer.addActionListener(new MainMenu());        
    paper.addActionListener(new MainMenu());
    edit.addActionListener(new MainMenu());
    view.addActionListener(new MainMenu());
    bill.addActionListener(new MainMenu());
    help.addActionListener(new MainMenu());
}
@Override
public void actionPerformed(ActionEvent e) {
    throw new UnsupportedOperationException("Not supported yet.");
}
}

您可以使用类的。构造函数用于初始化对象。我使用了构造函数。请查找更新的代码

Login.java

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import javax.swing.*;

public class Login implements ActionListener {

private JFrame jFrame = null;  
private JPanel jContentPane = null;
private JLabel id = null;
private JTextField userid = null;
private JLabel pass = null;
private JPasswordField password = null;
private JButton login = null;       

    //Constructor   
public Login() {

     pass = new JLabel();
     pass.setBounds(new Rectangle(21, 105, 116, 27));
     pass.setText("Password");
     id = new JLabel();
     id.setBounds(new Rectangle(21, 54, 119, 26));
     id.setText("Enter User Id");

     userid = new JTextField();
     userid.setBounds(new Rectangle(164, 53, 140, 26));

     password = new JPasswordField();
     password.setBounds(new Rectangle(165, 106, 137, 27));

     login = new JButton();
     login.setBounds(new Rectangle(165, 169, 136, 27));
     login.setText("Login");
     login.addActionListener((ActionListener) this);

     jContentPane = new JPanel();
     jContentPane.setLayout(null);
     jContentPane.add(id, null);
     jContentPane.add(userid, null);
     jContentPane.add(pass, null);
     jContentPane.add(password, null);
     jContentPane.add(login, null);


    jFrame = new JFrame();
    jFrame.setSize(new Dimension(346, 301));
    jFrame.setResizable( false );
    jFrame.setTitle("Shree Datta Digambar");
    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jFrame.setContentPane(jContentPane);
    jFrame.setLocation(300,150);
    jFrame.setVisible(true);
    }
    public void actionPerformed(ActionEvent e) 
    {
        if(e.getSource()==login)
        {
            if(userid.getText().equals("")||password.getPassword().equals(""))
            {
                JOptionPane.showMessageDialog(null, "Please Enter Details");
            }
            else
            {
                if(userid.getText().equals("digambar")&&  Arrays.equals(password.getPassword(), "dalvi".toCharArray()))
                {                                 
                    JOptionPane.showMessageDialog(null,"Welcome To Customer Details of Papers");
                    this.jFrame.dispose();  
                    MainMenu f = new MainMenu();
                }
                else
                {
                    JOptionPane.showMessageDialog(null,"Sorry Please Enter Valid Details");
                    userid.setText("");
                    password.setText("");
                }
            }
        }

    } 

   public static void main(String[] args){
        Login l=new Login();
    }
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class MainMenu extends JFrame implements ActionListener
{ 
        //Constructor   
    public MainMenu() 
    {
        JMenuBar menuBar = new JMenuBar();
        this.setJMenuBar(menuBar);
        this.setVisible(true);
        this.setSize(646,401);
        this.setResizable( false );
        this.setTitle("Shree Datta Digambar");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JMenu customer=new JMenu("Customer");
        menuBar.add(customer);
        JMenu paper=new JMenu("Paper");
        menuBar.add(paper);
        JMenu edit=new JMenu("Edit");
        menuBar.add(edit);              
        JMenu view=new JMenu("View");
        menuBar.add(view); 
        JMenu bill=new JMenu("Bill");
        menuBar.add(bill);
        JMenu help=new JMenu("Help");
        menuBar.add(help);

       JMenuItem newItem = new JMenuItem("New Customer");
        customer.add(newItem);
        JMenuItem deleteItem = new JMenuItem("Delete Customer");
        customer.add(deleteItem);

        JMenuItem addpaperItem = new JMenuItem("Add Paper");
        paper.add(addpaperItem);
        JMenuItem deletepaperItem = new JMenuItem("Delete Paper");
        paper.add(deletepaperItem);

        JMenuItem customer_detail = new JMenuItem("Customer Detail");
        edit.add(customer_detail);
        JMenuItem paper_detail = new JMenuItem("Paper Detail");
        edit.add(paper_detail);

        JMenuItem perticular_customer_detail = new JMenuItem("Perticular Customer Detail");
        view.add(perticular_customer_detail);

        JMenuItem customer_bill = new JMenuItem("Customer Bills");
        bill.add(customer_bill);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    public static void main(String arg[])
    {
        MainMenu menu1= new MainMenu();
    }
    }
main menu.java

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import javax.swing.*;

public class Login implements ActionListener {

private JFrame jFrame = null;  
private JPanel jContentPane = null;
private JLabel id = null;
private JTextField userid = null;
private JLabel pass = null;
private JPasswordField password = null;
private JButton login = null;       

    //Constructor   
public Login() {

     pass = new JLabel();
     pass.setBounds(new Rectangle(21, 105, 116, 27));
     pass.setText("Password");
     id = new JLabel();
     id.setBounds(new Rectangle(21, 54, 119, 26));
     id.setText("Enter User Id");

     userid = new JTextField();
     userid.setBounds(new Rectangle(164, 53, 140, 26));

     password = new JPasswordField();
     password.setBounds(new Rectangle(165, 106, 137, 27));

     login = new JButton();
     login.setBounds(new Rectangle(165, 169, 136, 27));
     login.setText("Login");
     login.addActionListener((ActionListener) this);

     jContentPane = new JPanel();
     jContentPane.setLayout(null);
     jContentPane.add(id, null);
     jContentPane.add(userid, null);
     jContentPane.add(pass, null);
     jContentPane.add(password, null);
     jContentPane.add(login, null);


    jFrame = new JFrame();
    jFrame.setSize(new Dimension(346, 301));
    jFrame.setResizable( false );
    jFrame.setTitle("Shree Datta Digambar");
    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jFrame.setContentPane(jContentPane);
    jFrame.setLocation(300,150);
    jFrame.setVisible(true);
    }
    public void actionPerformed(ActionEvent e) 
    {
        if(e.getSource()==login)
        {
            if(userid.getText().equals("")||password.getPassword().equals(""))
            {
                JOptionPane.showMessageDialog(null, "Please Enter Details");
            }
            else
            {
                if(userid.getText().equals("digambar")&&  Arrays.equals(password.getPassword(), "dalvi".toCharArray()))
                {                                 
                    JOptionPane.showMessageDialog(null,"Welcome To Customer Details of Papers");
                    this.jFrame.dispose();  
                    MainMenu f = new MainMenu();
                }
                else
                {
                    JOptionPane.showMessageDialog(null,"Sorry Please Enter Valid Details");
                    userid.setText("");
                    password.setText("");
                }
            }
        }

    } 

   public static void main(String[] args){
        Login l=new Login();
    }
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class MainMenu extends JFrame implements ActionListener
{ 
        //Constructor   
    public MainMenu() 
    {
        JMenuBar menuBar = new JMenuBar();
        this.setJMenuBar(menuBar);
        this.setVisible(true);
        this.setSize(646,401);
        this.setResizable( false );
        this.setTitle("Shree Datta Digambar");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JMenu customer=new JMenu("Customer");
        menuBar.add(customer);
        JMenu paper=new JMenu("Paper");
        menuBar.add(paper);
        JMenu edit=new JMenu("Edit");
        menuBar.add(edit);              
        JMenu view=new JMenu("View");
        menuBar.add(view); 
        JMenu bill=new JMenu("Bill");
        menuBar.add(bill);
        JMenu help=new JMenu("Help");
        menuBar.add(help);

       JMenuItem newItem = new JMenuItem("New Customer");
        customer.add(newItem);
        JMenuItem deleteItem = new JMenuItem("Delete Customer");
        customer.add(deleteItem);

        JMenuItem addpaperItem = new JMenuItem("Add Paper");
        paper.add(addpaperItem);
        JMenuItem deletepaperItem = new JMenuItem("Delete Paper");
        paper.add(deletepaperItem);

        JMenuItem customer_detail = new JMenuItem("Customer Detail");
        edit.add(customer_detail);
        JMenuItem paper_detail = new JMenuItem("Paper Detail");
        edit.add(paper_detail);

        JMenuItem perticular_customer_detail = new JMenuItem("Perticular Customer Detail");
        view.add(perticular_customer_detail);

        JMenuItem customer_bill = new JMenuItem("Customer Bills");
        bill.add(customer_bill);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    public static void main(String arg[])
    {
        MainMenu menu1= new MainMenu();
    }
    }

您可以基于
JPanel
s构建UI,而不是单独的框架,并使用
CardLayout
在它们之间切换,或者使用登录面板的
JDialog
和主面板的
JFrame

主要的一点是,您可以将控制机制与UI组件分离,以便在必要时更容易地更改逻辑路径

请查看和以了解更多详细信息


您还应该适当地使用

您可以为JMenuItem使用匿名内部类

 JMenuItem newItem = new JMenuItem("New Customer");  
 newItem.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               MainMenu.this.dispose();
               New_Customer nn = new New_Customer() {};
           }
       });

让MainMenu实现ActionListener接口(
class MainMenu实现ActionListener


请参见使用模式
JDialog
查看其中一个“…我想在按下名为login的jbutton后从一个jframe移动到另一个jframe。”因此。。有什么问题吗?或者你只是想让我们帮你完成代码?“我在下面附上我的两个jframe代码,如果有更正或任何人想给我指令或指南,那么就可以给。”这是一个更重要的问题。来自类型JPasswordField的方法getText()已被弃用。使用getPassword()。顺便说一句,Java GUI可能必须在多种平台上工作,使用不同的屏幕分辨率和不同的PLAF。因此,它们不利于部件的精确放置。为了组织一个强大的GUI组件,或者,连同布局填充和边框。考虑使用对话框或卡片布局,需要再次帮助。如果我想为另一个菜单项执行相同的内部类编码,那么我可以为它们执行相同的编码吗,或者是它们的任何其他编码方式。使用.equals()检查字符串是否为equalAddActionListener
newItem.addActionListener(此)&设置操作命令
设置操作命令(“新客户”)