Java 如何使用JMenuItem调用另一个类到我的主菜单类?

Java 如何使用JMenuItem调用另一个类到我的主菜单类?,java,swing,jmenu,jmenuitem,jmenubar,Java,Swing,Jmenu,Jmenuitem,Jmenubar,我不知道如何使用JMenuItem调用与我的主类(Lista)在同一个包中的另一个类(称为Calc)。如果我需要更具体一些,我不知道如何使用Lista类上的JMenuItem调用我的类Calc到我的Lista类 下面的代码是我的Lista类,对不起英国人 import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.event.MenuEvent;

我不知道如何使用JMenuItem调用与我的主类(Lista)在同一个包中的另一个类(称为Calc)。如果我需要更具体一些,我不知道如何使用Lista类上的JMenuItem调用我的类Calc到我的Lista类

下面的代码是我的Lista类,对不起英国人

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;

    import javax.swing.event.MenuEvent;
    import javax.swing.event.MenuListener;

    import javax.swing.*;
    import java.awt.event.*;

    public class Lista extends JFrame{
      public Lista(){
        super("Menu");

        // Menu Bar
        JMenuBar barra = new JMenuBar();
        setJMenuBar(barra);

        // Menu
        JMenu opcoes = new JMenu("Options");

        // Menu Item
        JMenuItem item = new JMenuItem("Item 1");

        // actionlistener
        item.addActionListener(
          new ActionListener(){
            public void actionPerformed(ActionEvent e){
              //I think that is in here where i must write the code
            }
          }
        );

        opcoes.add(item);

        // Adds
        barra.add(opcoes);

        setSize(300, 150);
        setVisible(true);    
      }

      public static void main(String args[]){
        Lista app = new Lista();
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
    }
另一个类Calc是我用以下代码制作的一个简单计算器: 公共类计算扩展JFrame{

public Calc(){
    super("Calculadora");
    Container tela = getContentPane();
    setLayout(null);

    JLabel rotulo1 = new JLabel("1 numero: ");
    JLabel rotulo2 = new JLabel("2 numero: ");
    JLabel showup = new JLabel("");

    JTextField texto1 = new JTextField(5);
    JTextField texto2 = new JTextField(5);

    JButton somar = new JButton ("+");
    JButton subtrair = new JButton("-");
    JButton dividir = new JButton("/");
    JButton multiplicar = new JButton("x");
    JButton exibir = new JButton("=");

    rotulo1.setBounds(30,20,100,20); rotulo2.setBounds(30,60,100,20);
    texto1.setBounds(100,20,200,20); texto2.setBounds(100,60,200,20);
    showup.setBounds(125,100,200,20);
    somar.setBounds(230,100,45,45);//coluna, linha, largura, comprimento
    subtrair.setBounds(280,100,45,45);
    dividir.setBounds(230,155,45,45);
    multiplicar.setBounds(280,155,45,45);
    exibir.setBounds(255,205,45,45);


    setVisible(true);
    setLocationRelativeTo(null);

    tela.add(rotulo1); tela.add(rotulo2);
    tela.add(texto1); tela.add(texto2); tela.add(showup);
    tela.add(exibir); tela.add(somar); tela.add(subtrair); tela.add(dividir);tela.add(multiplicar);

    setSize(350,300);

    somar.addActionListener( new ActionListener(){
        public void actionPerformed(ActionEvent e){
            double numero1, numero2, soma;
            soma=0;
            numero1 = Double.parseDouble(texto1.getText());
            numero2 = Double.parseDouble(texto2.getText());
            soma = numero1+numero2;
            showup.setVisible(true);
            showup.setText(texto1.getText()+""+"+"+""+texto2.getText()+""+"="+soma);
            texto1.setText(null); texto2.setText(null); texto1.requestFocus(); //funcao limpar e focar
        }
    }
    );

    subtrair.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
            double numero1, numero2, subtrair;
            subtrair=0;
            numero1 = Double.parseDouble(texto1.getText());
            numero2 = Double.parseDouble(texto2.getText());
            subtrair = numero1 - numero2;
            showup.setVisible(true);
            showup.setText(texto1.getText()+""+"-"+""+texto2.getText()+""+"="+subtrair);
            texto1.setText(null); texto2.setText(null); texto1.requestFocus();
        }
    });

    multiplicar.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
            double numero1, numero2, multiplicar;
            multiplicar=0;
            numero1 = Double.parseDouble(texto1.getText());
            numero2 = Double.parseDouble(texto2.getText());
            multiplicar = numero1*numero2;
            showup.setVisible(true);
            showup.setText(texto1.getText()+""+"x"+""+texto2.getText()+""+"="+multiplicar);
            texto1.setText(null); texto2.setText(null); texto1.requestFocus();
        }
    });

    dividir.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
            double numero1, numero2, dividir;
            dividir=0;
            numero1 = Double.parseDouble(texto1.getText());
            numero2 = Double.parseDouble(texto2.getText());
            dividir=numero1/numero2;
            showup.setVisible(true);
            showup.setText(texto1.getText()+""+"/"+""+texto2.getText()+""+"="+dividir);
            texto1.setText(null); texto2.setText(null); texto1.requestFocus();
        }
    });


}

public static void main (String [] args){
    Calc app = new Calc();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}}

我想做的唯一一件事是:当我在Lista代码中单击JMenuItem时,我的计算器程序(Calc类)被调用。我已经尝试过这样做:“Calc Calc=new Calc();Calc.Visible(true);”或“item=Calc;”但是失败了。我是一个程序员新手,抱歉,我认为这很简单。

从另一个类调用方法的一个简单方法是获取对另一个类的引用并调用该方法。如果另一个类的对象已经存在,那么不要通过创建新对象来实现这一点,而是传递来自现有对象的引用具体如何做将取决于您尚未向我们展示的代码

<>请注意,你的代码只能从一个主方法运行,我敢打赌,它不是你在这里发布的代码中的主要方法,而是来自另一个类中的另一个主要方法,但是所有这些都将取决于你还没有显示给我们的代码。您的问题,展示了更相关的代码,包括您计划如何启动这个类,它是否从另一个类启动,另一个类的功能和外观,您希望从这个类调用另一个类的哪些方法

有更好的方法来处理这一问题,包括在现阶段可能只会让您感到困惑的问题,但您最好知道,我上面建议的当前解决方案虽然简单,但并不是最干净的


看起来您可能正在尝试使用此代码创建和显示第二个JFrame,如果是,则不希望执行此操作。请参阅:


事实上,最好不要让Lista扩展JFrame,而是让它创建并生成一个JMenu,您可以在需要时将其放置在何处,但再次强调,要完全回答您的问题,需要从尚未向我们展示的代码中获得知识。

从另一个类调用方法的一个简单方法是获取对另一个类的引用并调用该方法。如果另一个类的对象已存在,则不要通过创建新对象来执行此操作,而是将现有对象的引用传递到此类中。具体如何执行将取决于您尚未向我们展示的代码

<>请注意,你的代码只能从一个主方法运行,我敢打赌,它不是你在这里发布的代码中的主要方法,而是来自另一个类中的另一个主要方法,但是所有这些都将取决于你还没有显示给我们的代码。您的问题,展示了更相关的代码,包括您计划如何启动这个类,它是否从另一个类启动,另一个类的功能和外观,您希望从这个类调用另一个类的哪些方法

有更好的方法来处理这一问题,包括在现阶段可能只会让您感到困惑的问题,但您最好知道,我上面建议的当前解决方案虽然简单,但并不是最干净的


看起来您可能正在尝试使用此代码创建和显示第二个JFrame,如果是,则不希望执行此操作。请参阅:


事实上,您最好不要让Lista扩展JFrame,而是让它创建并生成一个JMenu,您可以在需要时将其放置在何处,但再次强调,要完全回答您的问题,需要从尚未向我们展示的代码中获得知识。

您能在类中进行以下更改并查看吗结果是:

1) Lista.java

 public static void main(String args[]){
    Lista app = new Lista();        
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    app.setLocationRelativeTo(null); //so that the JFrame appears at the center of screen
  }
// actionlistener
item.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e){
          //I think that is in here where i must write the code              
          Calc calc=new Calc(Lista.this); // pass owner JFrame i.e. an instance of Lista
          calc.setVisible(true);
        }
      }
 );
2) Lista.java

 public static void main(String args[]){
    Lista app = new Lista();        
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    app.setLocationRelativeTo(null); //so that the JFrame appears at the center of screen
  }
// actionlistener
item.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e){
          //I think that is in here where i must write the code              
          Calc calc=new Calc(Lista.this); // pass owner JFrame i.e. an instance of Lista
          calc.setVisible(true);
        }
      }
 );
3) java

import java.awt.Container;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Calc extends JDialog {

private JLabel rotulo1;
private JLabel rotulo2;
private JLabel showup;
private JTextField texto1;
private JTextField texto2;
private JButton somar;
private JButton subtrair;
private JButton dividir;
private JButton multiplicar;
private JButton exibir;

public Calc(Frame owner) {
    super(owner, "Calculadora");
    Container tela = getContentPane();
    setLayout(null);

    rotulo1 = new JLabel("1 numero: ");
    rotulo2 = new JLabel("2 numero: ");
    showup = new JLabel("");

    texto1 = new JTextField(5);
    texto2 = new JTextField(5);

    somar = new JButton("+");
    subtrair = new JButton("-");
    dividir = new JButton("/");
    multiplicar = new JButton("x");
    exibir = new JButton("=");

    rotulo1.setBounds(30, 20, 100, 20);
    rotulo2.setBounds(30, 60, 100, 20);
    texto1.setBounds(100, 20, 200, 20);
    texto2.setBounds(100, 60, 200, 20);
    showup.setBounds(125, 100, 200, 20);
    somar.setBounds(230, 100, 45, 45);// coluna, linha, largura, comprimento
    subtrair.setBounds(280, 100, 45, 45);
    dividir.setBounds(230, 155, 45, 45);
    multiplicar.setBounds(280, 155, 45, 45);
    exibir.setBounds(255, 205, 45, 45);

    setVisible(true);
    setLocationRelativeTo(null);

    tela.add(rotulo1);
    tela.add(rotulo2);
    tela.add(texto1);
    tela.add(texto2);
    tela.add(showup);
    tela.add(exibir);
    tela.add(somar);
    tela.add(subtrair);
    tela.add(dividir);
    tela.add(multiplicar);

    setSize(350, 300);

    somar.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            double numero1, numero2, soma;
            soma = 0;
            numero1 = Double.parseDouble(texto1.getText());
            numero2 = Double.parseDouble(texto2.getText());
            soma = numero1 + numero2;
            showup.setVisible(true);
            showup.setText(texto1.getText() + "" + "+" + "" + texto2.getText() + "" + "=" + soma);
            texto1.setText(null);
            texto2.setText(null);
            texto1.requestFocus(); // funcao limpar e focar
        }
    });

    subtrair.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            double numero1, numero2, subtrair;
            subtrair = 0;
            numero1 = Double.parseDouble(texto1.getText());
            numero2 = Double.parseDouble(texto2.getText());
            subtrair = numero1 - numero2;
            showup.setVisible(true);
            showup.setText(texto1.getText() + "" + "-" + "" + texto2.getText() + "" + "=" + subtrair);
            texto1.setText(null);
            texto2.setText(null);
            texto1.requestFocus();
        }
    });

    multiplicar.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            double numero1, numero2, multiplicar;
            multiplicar = 0;
            numero1 = Double.parseDouble(texto1.getText());
            numero2 = Double.parseDouble(texto2.getText());
            multiplicar = numero1 * numero2;
            showup.setVisible(true);
            showup.setText(texto1.getText() + "" + "x" + "" + texto2.getText() + "" + "=" + multiplicar);
            texto1.setText(null);
            texto2.setText(null);
            texto1.requestFocus();
        }
    });

    dividir.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            double numero1, numero2, dividir;
            dividir = 0;
            numero1 = Double.parseDouble(texto1.getText());
            numero2 = Double.parseDouble(texto2.getText());
            dividir = numero1 / numero2;
            showup.setVisible(true);
            showup.setText(texto1.getText() + "" + "/" + "" + texto2.getText() + "" + "=" + dividir);
            texto1.setText(null);
            texto2.setText(null);
            texto1.requestFocus();
        }
    });

  }

}
说明:

Calc.java

  • 该类用于扩展
    JDialog
    而不是
    JFrame
  • 构造函数已更改,因此它接受所有者
    JFrame
    Lista
    ) 作为论据
  • 有许多局部变量是
    JTextField
    JButton
    JLabel
    等。它们都是实例变量

  • 希望这对您有所帮助。

    您能否在课堂上进行以下更改并查看结果:

    1) Lista.java

     public static void main(String args[]){
        Lista app = new Lista();        
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        app.setLocationRelativeTo(null); //so that the JFrame appears at the center of screen
      }
    
    // actionlistener
    item.addActionListener(
          new ActionListener(){
            public void actionPerformed(ActionEvent e){
              //I think that is in here where i must write the code              
              Calc calc=new Calc(Lista.this); // pass owner JFrame i.e. an instance of Lista
              calc.setVisible(true);
            }
          }
     );
    
    2) Lista.java

     public static void main(String args[]){
        Lista app = new Lista();        
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        app.setLocationRelativeTo(null); //so that the JFrame appears at the center of screen
      }
    
    // actionlistener
    item.addActionListener(
          new ActionListener(){
            public void actionPerformed(ActionEvent e){
              //I think that is in here where i must write the code              
              Calc calc=new Calc(Lista.this); // pass owner JFrame i.e. an instance of Lista
              calc.setVisible(true);
            }
          }
     );
    
    3) java

    import java.awt.Container;
    import java.awt.Frame;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    
    public class Calc extends JDialog {
    
    private JLabel rotulo1;
    private JLabel rotulo2;
    private JLabel showup;
    private JTextField texto1;
    private JTextField texto2;
    private JButton somar;
    private JButton subtrair;
    private JButton dividir;
    private JButton multiplicar;
    private JButton exibir;
    
    public Calc(Frame owner) {
        super(owner, "Calculadora");
        Container tela = getContentPane();
        setLayout(null);
    
        rotulo1 = new JLabel("1 numero: ");
        rotulo2 = new JLabel("2 numero: ");
        showup = new JLabel("");
    
        texto1 = new JTextField(5);
        texto2 = new JTextField(5);
    
        somar = new JButton("+");
        subtrair = new JButton("-");
        dividir = new JButton("/");
        multiplicar = new JButton("x");
        exibir = new JButton("=");
    
        rotulo1.setBounds(30, 20, 100, 20);
        rotulo2.setBounds(30, 60, 100, 20);
        texto1.setBounds(100, 20, 200, 20);
        texto2.setBounds(100, 60, 200, 20);
        showup.setBounds(125, 100, 200, 20);
        somar.setBounds(230, 100, 45, 45);// coluna, linha, largura, comprimento
        subtrair.setBounds(280, 100, 45, 45);
        dividir.setBounds(230, 155, 45, 45);
        multiplicar.setBounds(280, 155, 45, 45);
        exibir.setBounds(255, 205, 45, 45);
    
        setVisible(true);
        setLocationRelativeTo(null);
    
        tela.add(rotulo1);
        tela.add(rotulo2);
        tela.add(texto1);
        tela.add(texto2);
        tela.add(showup);
        tela.add(exibir);
        tela.add(somar);
        tela.add(subtrair);
        tela.add(dividir);
        tela.add(multiplicar);
    
        setSize(350, 300);
    
        somar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                double numero1, numero2, soma;
                soma = 0;
                numero1 = Double.parseDouble(texto1.getText());
                numero2 = Double.parseDouble(texto2.getText());
                soma = numero1 + numero2;
                showup.setVisible(true);
                showup.setText(texto1.getText() + "" + "+" + "" + texto2.getText() + "" + "=" + soma);
                texto1.setText(null);
                texto2.setText(null);
                texto1.requestFocus(); // funcao limpar e focar
            }
        });
    
        subtrair.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                double numero1, numero2, subtrair;
                subtrair = 0;
                numero1 = Double.parseDouble(texto1.getText());
                numero2 = Double.parseDouble(texto2.getText());
                subtrair = numero1 - numero2;
                showup.setVisible(true);
                showup.setText(texto1.getText() + "" + "-" + "" + texto2.getText() + "" + "=" + subtrair);
                texto1.setText(null);
                texto2.setText(null);
                texto1.requestFocus();
            }
        });
    
        multiplicar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                double numero1, numero2, multiplicar;
                multiplicar = 0;
                numero1 = Double.parseDouble(texto1.getText());
                numero2 = Double.parseDouble(texto2.getText());
                multiplicar = numero1 * numero2;
                showup.setVisible(true);
                showup.setText(texto1.getText() + "" + "x" + "" + texto2.getText() + "" + "=" + multiplicar);
                texto1.setText(null);
                texto2.setText(null);
                texto1.requestFocus();
            }
        });
    
        dividir.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                double numero1, numero2, dividir;
                dividir = 0;
                numero1 = Double.parseDouble(texto1.getText());
                numero2 = Double.parseDouble(texto2.getText());
                dividir = numero1 / numero2;
                showup.setVisible(true);
                showup.setText(texto1.getText() + "" + "/" + "" + texto2.getText() + "" + "=" + dividir);
                texto1.setText(null);
                texto2.setText(null);
                texto1.requestFocus();
            }
        });
    
      }
    
    }
    
    说明:

    Calc.java

  • 该类用于扩展
    JDialog
    而不是
    JFrame
  • 构造函数已更改,因此它接受所有者
    JFrame
    Lista
    ) 作为论据
  • 有许多局部变量是
    JTextField
    JButton
    JLabel
    等。它们都是实例变量

  • 希望这能对你有所帮助。

    菲利佩,这对我来说很有用……这是基于桑吉夫·萨哈的回答

    enter 
    
    import java.awt.Container;
    import java.awt.Frame;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    
    public class Calc extends JDialog {
    
    private JLabel rotulo1;
    private JLabel rotulo2;
    private JLabel showup;
    private JTextField texto1;
    private JTextField texto2;
    private JButton somar;
    private JButton subtrair;
    private JButton dividir;
    private JButton multiplicar;
    private JButton exibir;
    
    public Calc(Frame owner) {
    super(owner, "Calculadora");
    Container tela = getContentPane();
    setLayout(null);
    
    rotulo1 = new JLabel("1 numero: ");
    rotulo2 = new JLabel("2 numero: ");
    showup = new JLabel("");
    
    texto1 = new JTextField(5);
    texto2 = new JTextField(5);
    
    somar = new JButton("+");
    subtrair = new JButton("-");
    dividir = new JButton("/");
    multiplicar = new JButton("x");
    exibir = new JButton("=");
    
    rotulo1.setBounds(30, 20, 100, 20);
    rotulo2.setBounds(30, 60, 100, 20);
    texto1.setBounds(100, 20, 200, 20);
    texto2.setBounds(100, 60, 200, 20);
    showup.setBounds(125, 100, 200, 20);
    somar.setBounds(230, 100, 45, 45);// coluna, linha, largura, comprimento
    subtrair.setBounds(280, 100, 45, 45);
    dividir.setBounds(230, 155, 45, 45);
    multiplicar.setBounds(280, 155, 45, 45);
    exibir.setBounds(255, 205, 45, 45);
    
    setVisible(true);
    setLocationRelativeTo(null);
    
    tela.add(rotulo1);
    tela.add(rotulo2);
    tela.add(texto1);
    tela.add(texto2);
    tela.add(showup);
    tela.add(exibir);
    tela.add(somar);
    tela.add(subtrair);
    tela.add(dividir);
    tela.add(multiplicar);
    
    setSize(350, 300);
    
    somar.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            double numero1, numero2, soma;
            soma = 0;
            numero1 = Double.parseDouble(texto1.getText());
            numero2 = Double.parseDouble(texto2.getText());
            soma = numero1 + numero2;
            showup.setVisible(true);
            showup.setText(texto1.getText() + "" + "+" + "" + texto2.getText() + "" + "=" + soma);
            texto1.setText(null);
            texto2.setText(null);
            texto1.requestFocus(); // funcao limpar e focar
        }
    });
    
    subtrair.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            double numero1, numero2, subtrair;
            subtrair = 0;
            numero1 = Double.parseDouble(texto1.getText());
            numero2 = Double.parseDouble(texto2.getText());
            subtrair = numero1 - numero2;
            showup.setVisible(true);
            showup.setText(texto1.getText() + "" + "-" + "" + texto2.getText() + "" + "=" + subtrair);
            texto1.setText(null);
            texto2.setText(null);
            texto1.requestFocus();
        }
    });
    
    multiplicar.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            double numero1, numero2, multiplicar;
            multiplicar = 0;
            numero1 = Double.parseDouble(texto1.getText());
            numero2 = Double.parseDouble(texto2.getText());
            multiplicar = numero1 * numero2;
            showup.setVisible(true);
            showup.setText(texto1.getText() + "" + "x" + "" + texto2.getText() + "" + "=" + multiplicar);
            texto1.setText(null);
            texto2.setText(null);
            texto1.requestFocus();
        }
    });
    
    dividir.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            double numero1, numero2, dividir;
            dividir = 0;
            numero1 = Double.parseDouble(texto1.getText());
            numero2 = Double.parseDouble(texto2.getText());
            dividir = numero1 / numero2;
            showup.setVisible(true);
            showup.setText(texto1.getText() + "" + "/" + "" + texto2.getText() + "" + "=" + dividir);
            texto1.setText(null);
            texto2.setText(null);
            texto1.requestFocus();
        }
    });
    
      }
    
    }
    
    还有一个班级

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    import javax.swing.event.MenuEvent;
    import javax.swing.event.MenuListener;
    
    import javax.swing.*;
    import java.awt.event.*;
    
    public class Lista extends JFrame{
      public Lista(){
        super("Menu");
    
        // Menu Bar
        JMenuBar barra = new JMenuBar();
        setJMenuBar(barra);
    
        // Menu
        JMenu opcoes = new JMenu("Options");
    
        // Menu Item
        JMenuItem item = new JMenuItem("Item 1");
    
        // actionlistener
        item.addActionListener(
          new ActionListener(){
            public void actionPerformed(ActionEvent e){
              new Calc(Lista.this);
            }
          }
        );
    
        opcoes.add(item);
    
        // Adds
        barra.add(opcoes);
    
        setSize(300, 150);
        setVisible(true);    
      }
    
      public static void main(String args[]){
        Lista app = new Lista();
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
    }
    

    菲利佩,这对我有用…这是基于桑吉夫·萨哈的回答

    enter 
    
    import java.awt.Container;
    import java.awt.Frame;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    
    public class Calc extends JDialog {
    
    private JLabel rotulo1;
    private JLabel rotulo2;
    private JLabel showup;
    private JTextField texto1;
    private JTextField texto2;
    private JButton somar;
    private JButton subtrair;
    private JButton dividir;
    private JButton multiplicar;
    private JButton exibir;
    
    public Calc(Frame owner) {
    super(owner, "Calculadora");
    Container tela = getContentPane();
    setLayout(null);
    
    rotulo1 = new JLabel("1 numero: ");
    rotulo2 = new JLabel("2 numero: ");
    showup = new JLabel("");
    
    texto1 = new JTextField(5);
    texto2 = new JTextField(5);
    
    somar = new JButton("+");
    subtrair = new JButton("-");
    dividir = new JButton("/");
    multiplicar = new JButton("x");
    exibir = new JButton("=");
    
    rotulo1.setBounds(30, 20, 100, 20);
    rotulo2.setBounds(30, 60, 100, 20);
    texto1.setBounds(100, 20, 200, 20);
    texto2.setBounds(100, 60, 200, 20);
    showup.setBounds(125, 100, 200, 20);
    somar.setBounds(230, 100, 45, 45);// coluna, linha, largura, comprimento
    subtrair.setBounds(280, 100, 45, 45);
    dividir.setBounds(230, 155, 45, 45);
    multiplicar.setBounds(280, 155, 45, 45);
    exibir.setBounds(255, 205, 45, 45);
    
    setVisible(true);
    setLocationRelativeTo(null);
    
    tela.add(rotulo1);
    tela.add(rotulo2);
    tela.add(texto1);
    tela.add(texto2);
    tela.add(showup);
    tela.add(exibir);
    tela.add(somar);
    tela.add(subtrair);
    tela.add(dividir);
    tela.add(multiplicar);
    
    setSize(350, 300);
    
    somar.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            double numero1, numero2, soma;
            soma = 0;
            numero1 = Double.parseDouble(texto1.getText());
            numero2 = Double.parseDouble(texto2.getText());
            soma = numero1 + numero2;
            showup.setVisible(true);
            showup.setText(texto1.getText() + "" + "+" + "" + texto2.getText() + "" + "=" + soma);
            texto1.setText(null);
            texto2.setText(null);
            texto1.requestFocus(); // funcao limpar e focar
        }
    });
    
    subtrair.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            double numero1, numero2, subtrair;
            subtrair = 0;
            numero1 = Double.parseDouble(texto1.getText());
            numero2 = Double.parseDouble(texto2.getText());
            subtrair = numero1 - numero2;
            showup.setVisible(true);
            showup.setText(texto1.getText() + "" + "-" + "" + texto2.getText() + "" + "=" + subtrair);
            texto1.setText(null);
            texto2.setText(null);
            texto1.requestFocus();
        }
    });
    
    multiplicar.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            double numero1, numero2, multiplicar;
            multiplicar = 0;
            numero1 = Double.parseDouble(texto1.getText());
            numero2 = Double.parseDouble(texto2.getText());
            multiplicar = numero1 * numero2;
            showup.setVisible(true);
            showup.setText(texto1.getText() + "" + "x" + "" + texto2.getText() + "" + "=" + multiplicar);
            texto1.setText(null);
            texto2.setText(null);
            texto1.requestFocus();
        }
    });
    
    dividir.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            double numero1, numero2, dividir;
            dividir = 0;
            numero1 = Double.parseDouble(texto1.getText());
            numero2 = Double.parseDouble(texto2.getText());
            dividir = numero1 / numero2;
            showup.setVisible(true);
            showup.setText(texto1.getText() + "" + "/" + "" + texto2.getText() + "" + "=" + dividir);
            texto1.setText(null);
            texto2.setText(null);
            texto1.requestFocus();
        }
    });
    
      }
    
    }
    
    还有一个班级

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    import javax.swing.event.MenuEvent;
    import javax.swing.event.MenuListener;
    
    import javax.swing.*;
    import java.awt.event.*;
    
    public class Lista extends JFrame{
      public Lista(){
        super("Menu");
    
        // Menu Bar
        JMenuBar barra = new JMenuBar();
        setJMenuBar(barra);
    
        // Menu
        JMenu opcoes = new JMenu("Options");
    
        // Menu Item
        JMenuItem item = new JMenuItem("Item 1");
    
        // actionlistener
        item.addActionListener(
          new ActionListener(){
            public void actionPerformed(ActionEvent e){
              new Calc(Lista.this);
            }
          }
        );
    
        opcoes.add(item);
    
        // Adds
        barra.add(opcoes);
    
        setSize(300, 150);
        setVisible(true);    
      }
    
      public static void main(String args[]){
        Lista app = new Lista();
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
    }
    

    看起来您可能正试图使用此代码创建和显示第二个JFrame,如果是,您不想这样做。请参阅:。至于您的问题,一个简单的解决方案是只需将对可视化的其他类的引用传递到此类中。看起来您可能正试图使用此代码创建和显示第二个JFrame,如果所以,您不想这样做。请参阅:。对于您的问题,一个简单的解决方案是