geänderten Textfeldinhalt mit parse auslesen

flo014

Neues Mitglied
Hallo, habe ein kleines Problem.
Ich habe ein Programm programmiert das komplexe Zahlen verarbeitet. Habe nun im GUI einen Rechner gebaut und funktioniert soweit, nur wenn ich das Textfeld ändere ( andere Zahl hineinschreibe), verarbeitet er noch immer die ursprünglichen Zahlen, wird wohl irgendwie am passe liegen, da ich es im Konstruktion vielleicht schon aufrufe. Bitte um Hilfe :D, LG

Java:
public class Rechner extends javax.swing.JFrame {
    
    ImaginaryNumber n1;
    ImaginaryNumber n2;
    


    /**
     * Creates new form Rechner
     */
    public Rechner() {
        initComponents();
        double re1 = Double.parseDouble(re1text.getText());
        double im1 = Double.parseDouble(im1text.getText());
        double re2 = Double.parseDouble(re2text.getText());
        double im2 = Double.parseDouble(im2text.getText());
        
        
        n1 = new ImaginaryNumber(re1,im1);
        n2 = new ImaginaryNumber(re2,im2);
        
        
        
    }


    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;


        im1text = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        re2text = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        absbtn = new javax.swing.JButton();
        plusbtn = new javax.swing.JButton();
        mulbtn = new javax.swing.JButton();
        divbtn = new javax.swing.JButton();
        jLabel3 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        re1text = new javax.swing.JTextField();
        im2text = new javax.swing.JTextField();
        erg = new javax.swing.JLabel();


        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(new java.awt.GridBagLayout());


        im1text.setText("2");
        im1text.setMinimumSize(new java.awt.Dimension(50, 28));
        im1text.setPreferredSize(new java.awt.Dimension(30, 28));
        im1text.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                im1textActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 1;
        getContentPane().add(im1text, gridBagConstraints);


        jLabel1.setText("+");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        getContentPane().add(jLabel1, gridBagConstraints);


        re2text.setText("1");
        re2text.setMinimumSize(new java.awt.Dimension(140, 28));
        re2text.setPreferredSize(new java.awt.Dimension(30, 28));
        re2text.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                re2textActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        getContentPane().add(re2text, gridBagConstraints);


        jLabel2.setText("+");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 3;
        getContentPane().add(jLabel2, gridBagConstraints);


        absbtn.setText("abs");
        absbtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                absbtnActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 4;
        gridBagConstraints.gridy = 0;
        getContentPane().add(absbtn, gridBagConstraints);


        plusbtn.setText("+");
        plusbtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                plusbtnActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 4;
        gridBagConstraints.gridy = 1;
        getContentPane().add(plusbtn, gridBagConstraints);


        mulbtn.setText("*");
        mulbtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                mulbtnActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 4;
        gridBagConstraints.gridy = 2;
        getContentPane().add(mulbtn, gridBagConstraints);


        divbtn.setText("/");
        divbtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                divbtnActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 4;
        gridBagConstraints.gridy = 3;
        getContentPane().add(divbtn, gridBagConstraints);


        jLabel3.setText("Ergebnis:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 5;
        gridBagConstraints.gridy = 0;
        getContentPane().add(jLabel3, gridBagConstraints);


        jLabel5.setText("Imaginärzahl1");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        getContentPane().add(jLabel5, gridBagConstraints);


        jLabel6.setText("i");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 1;
        getContentPane().add(jLabel6, gridBagConstraints);


        jLabel7.setText("i");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 3;
        getContentPane().add(jLabel7, gridBagConstraints);


        jLabel8.setText("Imaginärzahl2");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        getContentPane().add(jLabel8, gridBagConstraints);


        re1text.setText("2");
        re1text.setPreferredSize(new java.awt.Dimension(30, 28));
        re1text.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                re1textActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        getContentPane().add(re1text, gridBagConstraints);


        im2text.setText("1");
        im2text.setPreferredSize(new java.awt.Dimension(30, 28));
        im2text.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                im2textActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 3;
        getContentPane().add(im2text, gridBagConstraints);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 5;
        gridBagConstraints.gridy = 1;
        getContentPane().add(erg, gridBagConstraints);


        pack();
    }// </editor-fold>                        


    private void absbtnActionPerformed(java.awt.event.ActionEvent evt) {                                       
        erg.setText("");
        n1.abs(); 
        erg.setText(Double.toString(n1.abs()));
    }                                      


    private void re1textActionPerformed(java.awt.event.ActionEvent evt) {                                        
       
    }                                       


    private void im1textActionPerformed(java.awt.event.ActionEvent evt) {                                        
        
    }                                       


    private void re2textActionPerformed(java.awt.event.ActionEvent evt) {                                        
      
    }                                       


    private void im2textActionPerformed(java.awt.event.ActionEvent evt) {                                        
        
    }                                       


    private void plusbtnActionPerformed(java.awt.event.ActionEvent evt) {                                        
        erg.setText("");
        n1.add(n2);
        erg.setText(n1.add(n2).toString());
    }                                       


    private void mulbtnActionPerformed(java.awt.event.ActionEvent evt) {                                       
        erg.setText("");
        n1.multipleBy(n2);
        erg.setText(n1.multipleBy(n2).toString());
    }                                      


    private void divbtnActionPerformed(java.awt.event.ActionEvent evt) {                                       
        erg.setText("");
        n1.divideBy(n2);
        erg.setText(n1.divideBy(n2).toString());
    }                                      


    
  
 
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see [URL="http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html"]How to Set the Look and Feel (The Javaâ„¢ Tutorials > Creating a GUI With JFC/Swing > Modifying the Look and Feel)[/URL] 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Rechner.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Rechner.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Rechner.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Rechner.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>


        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Rechner().setVisible(true);
            }
        });
    }


    // Variables declaration - do not modify                     
    private javax.swing.JButton absbtn;
    private javax.swing.JButton divbtn;
    private javax.swing.JLabel erg;
    private javax.swing.JTextField im1text;
    private javax.swing.JTextField im2text;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JButton mulbtn;
    private javax.swing.JButton plusbtn;
    private javax.swing.JTextField re1text;
    private javax.swing.JTextField re2text;
    // End of variables declaration                   
}
 
Zuletzt bearbeitet:

Foxei

Bekanntes Mitglied
Hallo flo014,
mit verlaub aber dein Code ist Chaos Pur du Trennst das UI nicht von der Logik Basis.

Ich habe mit mal 20 min genommen und dein Programm nachgestellt und Sauber getrennt. Alle Actionen werden nun im Rechner Controller ausgeführt und das UI ist angetrennt in einer zweiten Klasse. Der ActionListener ist zusammen gefasst in einer Methode mit e.getActionCommand(); bekommst du aber trotztem raus welcher Button es ist du musst dann halt eine If and else bzw ein switch Statement schreiben um zu dereferenzieren. Und mit panel.getTxt... bekommst du deine Vier Text Felder um die Text auzulesen. Wenn du nun deine Doubles nun im ActionListener immer neu erzeigst sollte es Funktionieren.
Bewahre dir das Beispiel auf du kannst dann Später immer abgucken.
Wenn du noch Fragen hast immer her damit.

Gruß Simon.

RechnerPanel.java
Java:
import java.awt.event.ActionListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

/**
 *
 * @author Simon Schäfer <simon.schaefer@teamkoeln.com>
 */
public class RechnerPanel extends JPanel {

    private final JFrame frame;
    public RechnerPanel() {
        loadLookAndFeel();
        initComponents();
        frame=new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.add(this);
        frame.pack();
        frame.setLocationRelativeTo(null);
    }
    
    private void loadLookAndFeel() {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
            Logger.getLogger(RechnerPanel.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void addActionListener(ActionListener ac){
        btnAbs.addActionListener(ac);
        btnAdd.addActionListener(ac);
        btnDiv.addActionListener(ac);
        btnMul.addActionListener(ac);
    }

    public JFrame getFrame() {
        return frame;
    }

    public JTextField getTxtIm1() {
        return TxtIm1;
    }

    public JButton getBtnAbs() {
        return btnAbs;
    }

    public JButton getBtnAdd() {
        return btnAdd;
    }

    public JButton getBtnDiv() {
        return btnDiv;
    }

    public JButton getBtnMul() {
        return btnMul;
    }

    public JLabel getjLabel1() {
        return jLabel1;
    }

    public JTextField getTxtIm2() {
        return txtIm2;
    }

    public JTextField getTxtRe1() {
        return txtRe1;
    }

    public JTextField getTxtRe2() {
        return txtRe2;
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        jLabel1 = new javax.swing.JLabel();
        javax.swing.JLabel lblIm1 = new javax.swing.JLabel();
        javax.swing.JLabel lnlIm2 = new javax.swing.JLabel();
        txtRe1 = new javax.swing.JTextField();
        TxtIm1 = new javax.swing.JTextField();
        txtRe2 = new javax.swing.JTextField();
        txtIm2 = new javax.swing.JTextField();
        javax.swing.JLabel lblAdd1 = new javax.swing.JLabel();
        javax.swing.JLabel lnlAdd2 = new javax.swing.JLabel();
        javax.swing.JLabel lblI1 = new javax.swing.JLabel();
        javax.swing.JLabel lblI2 = new javax.swing.JLabel();
        javax.swing.JPanel panelButton = new javax.swing.JPanel();
        btnAbs = new javax.swing.JButton();
        btnAdd = new javax.swing.JButton();
        btnMul = new javax.swing.JButton();
        btnDiv = new javax.swing.JButton();

        jLabel1.setText("jLabel1");

        setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
        java.awt.GridBagLayout layout = new java.awt.GridBagLayout();
        layout.columnWidths = new int[] {0, 5, 0, 5, 0, 5, 0};
        layout.rowHeights = new int[] {0, 5, 0, 5, 0, 5, 0, 5, 0};
        setLayout(layout);

        lblIm1.setText("Imaginärezahl1:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridwidth = 5;
        add(lblIm1, gridBagConstraints);

        lnlIm2.setText("Imaginärezahl2:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.gridwidth = 5;
        add(lnlIm2, gridBagConstraints);

        txtRe1.setColumns(3);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.weightx = 0.1;
        add(txtRe1, gridBagConstraints);

        TxtIm1.setColumns(3);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 4;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.weightx = 0.1;
        add(TxtIm1, gridBagConstraints);

        txtRe2.setColumns(3);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        add(txtRe2, gridBagConstraints);

        txtIm2.setColumns(3);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 4;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        add(txtIm2, gridBagConstraints);

        lblAdd1.setText("+");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 2;
        add(lblAdd1, gridBagConstraints);

        lnlAdd2.setText("+");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 6;
        add(lnlAdd2, gridBagConstraints);

        lblI1.setText("i");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 6;
        gridBagConstraints.gridy = 2;
        add(lblI1, gridBagConstraints);

        lblI2.setText("i");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 6;
        gridBagConstraints.gridy = 6;
        add(lblI2, gridBagConstraints);

        btnAbs.setText("abs");
        btnAbs.setMargin(new java.awt.Insets(0, 0, 0, 0));
        btnAbs.setPreferredSize(new java.awt.Dimension(30, 23));
        panelButton.add(btnAbs);

        btnAdd.setText("+");
        btnAdd.setMargin(new java.awt.Insets(0, 0, 0, 0));
        btnAdd.setPreferredSize(new java.awt.Dimension(30, 23));
        panelButton.add(btnAdd);

        btnMul.setText("*");
        btnMul.setMargin(new java.awt.Insets(0, 0, 0, 0));
        btnMul.setPreferredSize(new java.awt.Dimension(30, 23));
        panelButton.add(btnMul);

        btnDiv.setText("/");
        btnDiv.setMargin(new java.awt.Insets(0, 0, 0, 0));
        btnDiv.setPreferredSize(new java.awt.Dimension(30, 23));
        panelButton.add(btnDiv);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 8;
        gridBagConstraints.gridwidth = 7;
        add(panelButton, gridBagConstraints);
    }// </editor-fold>                        


    // Variables declaration - do not modify                     
    private javax.swing.JTextField TxtIm1;
    private javax.swing.JButton btnAbs;
    private javax.swing.JButton btnAdd;
    private javax.swing.JButton btnDiv;
    private javax.swing.JButton btnMul;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JTextField txtIm2;
    private javax.swing.JTextField txtRe1;
    private javax.swing.JTextField txtRe2;
    // End of variables declaration                   
}
RechnerController.java
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;

/**
 *
 * @author Simon Schäfer <simon.schaefer@teamkoeln.com>
 */
public class RechnerController implements ActionListener{

    private final RechnerPanel panel;
    public RechnerController() {
        panel=new RechnerPanel();
        panel.addActionListener(this);
        panel.getFrame().setVisible(true);
    }

    
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("Butten pressed: "+e.getActionCommand());
        System.out.println(panel.getTxtRe1().getText());
        
        showMessage("Button Pressed: "+e.getActionCommand());
    }
    
    public void showMessage(String message){
        JOptionPane.showMessageDialog(panel, message, panel.getFrame().getTitle(), JOptionPane.INFORMATION_MESSAGE);
    }
    
    public static void main(String[] args){
        new RechnerController();
    }
    
}
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...

Ähnliche Java Themen

Neue Themen


Oben