Pequeña ayuda

Hola, bueno no soy tan nueva programando pero tampoco soy una experta, recientemente un profesor de la universidad dejo realizar un pequeño proyecto (Calculadora Científica) usando el programa Eclipse. El trabajo lleva ciertos requisitos, los que me causaron algunos inconvenientes fueron : Usar métodos manuales (o sea no usar las librerías que te dan por default el proceso) y usar ventanas externas para algunos cálculos; debido a esto hay mas código que manejar si lo simplifico el programa deja de correr; otro problema es que no se bien como unir las dichas ventanas a sus respectivos botones en la calculadora. Alguien podría guiarme o decirme como o que podría usar?

Atte
Estefania

P.D. Adjunto una imagen para dar mas o menos una idea grafica de lo que necesito hacer, den antemano Gracias.

AdjuntoTamaño
Ventanas.png197.01 KB

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

JFrame & JDialog

 

No es complicado. Sólo agrega una instancia de java.awt.event.ActionListener al botón deseado y en el método actionPerformed de ésta agrega código para volver visible alguna instancia de javax.swing.JFrame o javax.swing.JDialog.

Yo te recomiendo por usabilidad utilizar una única instancia de JFrame para la ventana principal y varias instancias de JDialog para las «ventanas externas».

He aquí un pequeño ejemplo para ilustrar esto último:

class MainFrame extends JFrame {
    private CombinationDialog dialog;
    public MainFrame(String title) {
        super(title);
        dialog = new CombinationDialog(this, "nCr", true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setLayout(new FlowLayout());
        add(new JButton(new AbstractAction("nCr") {
            public void actionPerformed(ActionEvent e) {
                dialog.setVisible(true);
            }
        }));
        setSize(300, 200);
        setLocationRelativeTo(null);
    }
}

class CombinationDialog extends JDialog {
    public CombinationDialog(Frame owner, String title, boolean modal) {
        super(owner, title, modal);
        setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
        setLayout(new FlowLayout());
        add(new JLabel("Combination"));
        setSize(150, 100);
        setLocationRelativeTo(owner);
    }
}

public static void main(String[] args) {
    new MainFrame("Calculator").setVisible(true);
}

JFrame & JDialog

¡Por si sirve de algo!

~~~

Gracias

Vi el código que me mostraste, realmente es útil, solo que no supe bien como agregarlo a mi código (soy algo lenta en eso), si hay algo por ahí que me puedan hacer notar, leo todo. Todavía me falta bastante por hacer... esta algo extenso(perdón por eso :'( )
El código que he estado desarrollando es el siguiente:

package Calcu;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.AbstractAction;
import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JButton;

import java.awt.Color;

import javax.swing.SwingConstants;

import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Diseño extends JFrame {
       
        String numero,numero2,operaciones;

        private JPanel contentPane;
        private JTextField txtdato;
        private JButton btnNewButton;
        private JButton button;
        private JButton button_1;
        private JButton button_2;
        private JButton btnCos;
        private JButton btnLog;
        private JButton button_5;
        private JButton button_6;
        private JButton button_7;
        private JButton button_8;
        private JButton btnSin;
        private JButton btnE;
        private JButton button_11;
        private JButton button_12;
        private JButton button_13;
        private JButton btnX;
        private JButton btnTan;
        private JButton button_16;
        private JButton button_17;
        private JButton button_18;
        private JButton btnP;
        private JButton button_20;
        private JButton Fac;
        private JButton btnPi;
        private JButton button_23;
        private JButton button_24;
        private JButton btnDell;
        private JButton button_26;
        private JButton btnCl;

        /**
         * Launch the application.
         */

        public static void main(String[] args) {
                EventQueue.invokeLater(new Runnable() {
                        public void run() {
                                try {
                                        Diseño frame = new Diseño();
                                        frame.setVisible(true);
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
                        }
                });
        }

        /**
         * Create the frame.
         */

        public Diseño() {
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                setBounds(100, 100, 514, 256);
                contentPane = new JPanel();
                contentPane.setForeground(new Color(255, 255, 255));
                contentPane.setBackground(new Color(0, 0, 0));
                contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
                setContentPane(contentPane);
                contentPane.setLayout(null);
               
                txtdato = new JTextField();
                txtdato.setBackground(new Color(255, 255, 255));
                txtdato.setHorizontalAlignment(SwingConstants.RIGHT);
                txtdato.setBounds(60, 23, 395, 20);
                contentPane.add(txtdato);
                txtdato.setColumns(10);
               
                btnNewButton = new JButton("1");
                btnNewButton.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                txtdato.setText(txtdato.getText()+ "1");
                        }
                });
                btnNewButton.setForeground(Color.BLACK);
                btnNewButton.setBackground(Color.CYAN);
                btnNewButton.setToolTipText("");
                btnNewButton.setBounds(22, 88, 41, 23);
                contentPane.add(btnNewButton);
               
                button = new JButton("2");
                button.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                txtdato.setText(txtdato.getText()+ "2");
                        }
                });
                button.setForeground(Color.BLACK);
                button.setBackground(Color.CYAN);
                button.setBounds(73, 88, 41, 23);
                contentPane.add(button);
               
                button_1 = new JButton("3");
                button_1.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                txtdato.setText(txtdato.getText()+ "3");
                        }
                });
                button_1.setForeground(Color.BLACK);
                button_1.setBackground(Color.CYAN);
                button_1.setBounds(124, 88, 41, 23);
                contentPane.add(button_1);
               
                button_2 = new JButton("+");
                button_2.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                if(!txtdato.getText().equals("")){
                                        numero = txtdato.getText();
                                        operaciones = "+";
                                        txtdato.setText("");
                                }
                        }
                });
                button_2.setForeground(Color.BLACK);
                button_2.setBackground(Color.CYAN);
                button_2.setBounds(191, 88, 41, 23);
                contentPane.add(button_2);
               
                btnCos = new JButton("cos");
                btnCos.setForeground(Color.BLACK);
                btnCos.setFont(new Font("Tahoma", Font.PLAIN, 10));
                btnCos.setBackground(Color.CYAN);
                btnCos.setBounds(242, 88, 53, 23);
                contentPane.add(btnCos);
               
                btnLog = new JButton("log");
                btnLog.setForeground(Color.BLACK);
                btnLog.setFont(new Font("Tahoma", Font.PLAIN, 9));
                btnLog.setBackground(Color.CYAN);
                btnLog.setBounds(305, 88, 46, 23);
                contentPane.add(btnLog);
               
                button_5 = new JButton("4");
                button_5.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                txtdato.setText(txtdato.getText()+ "4");
                        }
                });
                button_5.setForeground(Color.BLACK);
                button_5.setBackground(Color.CYAN);
                button_5.setBounds(22, 122, 41, 23);
                contentPane.add(button_5);
               
                button_6 = new JButton("5");
                button_6.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                txtdato.setText(txtdato.getText()+ "5");
                        }
                });
                button_6.setForeground(Color.BLACK);
                button_6.setBackground(Color.CYAN);
                button_6.setBounds(73, 122, 41, 23);
                contentPane.add(button_6);
               
                button_7 = new JButton("6");
                button_7.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                txtdato.setText(txtdato.getText()+ "6");
                        }
                });
                button_7.setForeground(Color.BLACK);
                button_7.setBackground(Color.CYAN);
                button_7.setBounds(124, 122, 41, 23);
                contentPane.add(button_7);
               
                button_8 = new JButton("-");
                button_8.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                if(!txtdato.getText().equals("")){
                                        numero = txtdato.getText();
                                        operaciones = "-";
                                        txtdato.setText("");
                                }
                        }
                });
                button_8.setForeground(Color.BLACK);
                button_8.setBackground(Color.CYAN);
                button_8.setBounds(191, 122, 41, 23);
                contentPane.add(button_8);
               
                btnSin = new JButton("sin");
                btnSin.setForeground(Color.BLACK);
                btnSin.setBackground(Color.CYAN);
                btnSin.setBounds(242, 122, 53, 23);
                contentPane.add(btnSin);
               
                btnE = new JButton("e");
                btnE.setForeground(Color.BLACK);
                btnE.setBackground(Color.CYAN);
                btnE.setBounds(305, 122, 46, 23);
                contentPane.add(btnE);
               
                button_11 = new JButton("7");
                button_11.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                txtdato.setText(txtdato.getText()+ "7");
                        }
                });
                button_11.setForeground(Color.BLACK);
                button_11.setBackground(Color.CYAN);
                button_11.setBounds(22, 156, 41, 23);
                contentPane.add(button_11);
               
                button_12 = new JButton("8");
                button_12.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                txtdato.setText(txtdato.getText()+ "8");
                        }
                });
                button_12.setForeground(Color.BLACK);
                button_12.setBackground(Color.CYAN);
                button_12.setBounds(73, 156, 41, 23);
                contentPane.add(button_12);
               
                button_13 = new JButton("9");
                button_13.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                txtdato.setText(txtdato.getText()+ "9");
                        }
                });
                button_13.setForeground(Color.BLACK);
                button_13.setBackground(Color.CYAN);
                button_13.setBounds(124, 156, 41, 23);
                contentPane.add(button_13);
               
                btnX = new JButton("x");
                btnX.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                if(!txtdato.getText().equals("")){
                                        numero = txtdato.getText();
                                        operaciones = "x";
                                        txtdato.setText("");
                                }
                        }
                });
                btnX.setForeground(Color.BLACK);
                btnX.setBackground(Color.CYAN);
                btnX.setBounds(191, 156, 41, 23);
                contentPane.add(btnX);
               
                btnTan = new JButton("tan");
                btnTan.setForeground(Color.BLACK);
                btnTan.setBackground(Color.CYAN);
                btnTan.setBounds(242, 156, 53, 23);
                contentPane.add(btnTan);
               
                button_16 = new JButton("^");
                button_16.setForeground(Color.BLACK);
                button_16.setBackground(Color.CYAN);
                button_16.setBounds(305, 156, 46, 23);
                contentPane.add(button_16);
               
                button_17 = new JButton(".");
                button_17.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                String punto;
                                punto = txtdato.getText();
                                if(punto.length()<= 0) {
                                        txtdato.setText(".");
                                }else{
                                        if (!Decimal (txtdato.getText())){
                                                txtdato.setText(txtdato.getText()+".");
                                        }
                                }
                        }
                        public boolean Decimal(String punto){
                                boolean resul;
                                resul = false;
                               
                                for(int i = 0; i < punto.length(); i++){
                                        if (punto.substring(i, i+1).equals(".")){
                                                resul = true;
                                                break;
                                        }
                                }return resul;
                        }
                       
                       
                });
                button_17.setForeground(Color.BLACK);
                button_17.setBackground(Color.CYAN);
                button_17.setBounds(22, 190, 41, 23);
                contentPane.add(button_17);
               
                button_18 = new JButton("0");
                button_18.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                txtdato.setText(txtdato.getText()+ "0");
                        }
                });
                button_18.setForeground(Color.BLACK);
                button_18.setBackground(Color.CYAN);
                button_18.setBounds(73, 190, 41, 23);
                contentPane.add(button_18);
               
                btnP = new JButton("+\\-");
                btnP.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                double num;
                                String dato;
                                dato = txtdato.getText();
                                if (dato.length()>0){
                                        num = Double.parseDouble(dato) * (-1);
                                        txtdato.setText(Double.toString(num));
                                }
                               
                        }
                });
                btnP.setForeground(Color.BLACK);
                btnP.setBackground(Color.CYAN);
                btnP.setFont(new Font("Tahoma", Font.PLAIN, 12));
                btnP.setBounds(124, 190, 57, 23);
                contentPane.add(btnP);
               
                button_20 = new JButton("/");
                button_20.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                if(!txtdato.getText().equals("")){
                                        numero = txtdato.getText();
                                        operaciones = "/";
                                        txtdato.setText("");
                                }
                        }
                });
                button_20.setForeground(Color.BLACK);
                button_20.setBackground(Color.CYAN);
                button_20.setBounds(191, 190, 41, 23);
                contentPane.add(button_20);
               
                Fac = new JButton("Fac");
                Fac.setFont(new Font("Tahoma", Font.PLAIN, 9));
                Fac.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent arg0) {

                                if(!txtdato.getText().equals("")){
                                        numero = txtdato.getText();
                                        operaciones = "Fac";
                                        txtdato.setText("Fac");
                                }
                        }
                });
                Fac.setForeground(Color.BLACK);
                Fac.setBackground(Color.CYAN);
                Fac.setBounds(242, 190, 53, 23);
                contentPane.add(Fac);
               
                btnPi = new JButton("PI");
                btnPi.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                txtdato.setText("3.141592");
                        }
                });
                btnPi.setForeground(Color.BLACK);
                btnPi.setBackground(Color.CYAN);
                btnPi.setBounds(305, 190, 46, 23);
                contentPane.add(btnPi);
               
                button_23 = new JButton("(");
                button_23.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                txtdato.setText("(");
                        }
                });
                button_23.setForeground(Color.BLACK);
                button_23.setBackground(Color.CYAN);
                button_23.setBounds(361, 88, 56, 23);
                contentPane.add(button_23);
               
                button_24 = new JButton(")");
                button_24.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                txtdato.setText(")");
                        }
                });
                button_24.setForeground(Color.BLACK);
                button_24.setBackground(Color.CYAN);
                button_24.setBounds(361, 122, 56, 23);
                contentPane.add(button_24);
               
                btnDell = new JButton("DELL");
                btnDell.setFont(new Font("Tahoma", Font.PLAIN, 8));
                btnDell.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                String borrar;
                                borrar = txtdato.getText();
                                if (borrar.length()>0){
                                        borrar = borrar.substring(0, borrar.length()-1);
                                        txtdato.setText(borrar);
                                }
                               
                        }
                });
                btnDell.setForeground(Color.BLACK);
                btnDell.setBackground(Color.CYAN);
                btnDell.setBounds(428, 55, 56, 23);
                contentPane.add(btnDell);
               
                button_26 = new JButton("=");
                button_26.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                String resul;
                                numero2 = txtdato.getText();
                                if(!numero2.equals("")){
                                        resul = calculos(numero,numero2,operaciones);
                                        txtdato.setText(resul);
                                }
                        }
                       
                        public String calculos(String numero, String numero2,String operaciones){
                                double resultado = 0.00;
                                String respuesta;
                               
                                if(operaciones.equals("-")){
                                        resultado = Double.parseDouble(numero)-Double.parseDouble(numero2);
                                }
                                if(operaciones.equals("+")){
                                        resultado = Double.parseDouble(numero)+Double.parseDouble(numero2);
                                }
                                if(operaciones.equals("x")){
                                        resultado = Double.parseDouble(numero)*Double.parseDouble(numero2);
                                }
                                if(operaciones.equals("/")){
                                        resultado = Double.parseDouble(numero)/Double.parseDouble(numero2);
                                }
                                if(operaciones.equals("Fac")){
                                        double fac = 1; double fac2 = 1;
                                        fac2 = Double.parseDouble(numero);
                                                for (int i = 1; i <= Double.parseDouble(numero); i++){
                                                        fac = fac * i;
                                                        resultado = fac;
                                                }
                                }
                                respuesta = Double.toString(resultado);
                                return respuesta;
                        }
                });
                button_26.setForeground(Color.BLACK);
                button_26.setBackground(Color.CYAN);
                button_26.setBounds(428, 190, 56, 23);
                contentPane.add(button_26);
               
                btnCl = new JButton("CE");
                btnCl.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                txtdato.setText("");
                        }
                });
                btnCl.setForeground(Color.BLACK);
                btnCl.setBackground(Color.CYAN);
                btnCl.setToolTipText("");
                btnCl.setBounds(22, 54, 52, 23);
                contentPane.add(btnCl);
               
                JButton btnNewButton_1 = new JButton("|A|");
                btnNewButton_1.setForeground(Color.BLACK);
                btnNewButton_1.setBackground(Color.CYAN);
                btnNewButton_1.setBounds(361, 156, 57, 23);
                contentPane.add(btnNewButton_1);
               
                JButton btnNcr = new JButton("nCr");
                btnNcr.setForeground(Color.BLACK);
                btnNcr.setBackground(Color.CYAN);
                btnNcr.setBounds(427, 122, 57, 23);
                contentPane.add(btnNcr);
               
                JButton btnNpr = new JButton("nPr");
                btnNpr.setForeground(Color.BLACK);
                btnNpr.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent arg0) {
                               
                        }
                });
                btnNpr.setBackground(Color.CYAN);
                btnNpr.setBounds(427, 88, 57, 23);
                contentPane.add(btnNpr);
               
                JButton btnXy = new JButton("x^y");
                btnXy.setForeground(Color.BLACK);
                btnXy.setBackground(Color.CYAN);
                btnXy.setBounds(427, 156, 57, 23);
                contentPane.add(btnXy);
               
                JButton btnRaiz = new JButton("Raiz");
                btnRaiz.setFont(new Font("Tahoma", Font.PLAIN, 7));
                btnRaiz.setForeground(Color.BLACK);
                btnRaiz.setBackground(Color.CYAN);
                btnRaiz.setBounds(361, 190, 56, 23);
                contentPane.add(btnRaiz);
        }
}

Imagen de alucard1

Creo que no deberias agregarlo a tu codigo....

Creo que la respuesta de jpaul es lo suficientemente completa para resolver tu problema, solo falta que entiendas el maravilloso ejemplo que te fue proporcionado, por lo cual es mas fácil realizar lo que deseas a partir de ese código y no al revés, por cierto, te recomiendo usar buenas practicas al momento de desarrollar (nombrado de variables, no poner todo el código en una clase, etc etc)