2016-04-07 8 views
-1

müssen Sie eine Schaltfläche zum Schließen der App und ein Reset zum Löschen der Felder und beginnt mit neuen Mengen erstellen . Meine Schließen-Schaltfläche, die ich hinzugefügt habe, tut nicht viel auf den Code, es replizieren nur die AddInterest-Schaltfläche Funktion.Jframe Erstellen Sie eine Schließen-Schaltfläche, die die Anwendung herunterfährt und eine Reset-Taste, um alle Textfelder zu löschen und mit neuen Beträgen

dies ist der Rahmen

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 

public class InvestmentFrame extends JFrame { 
    private static final int FRAME_WIDTH = 400; 
    private static final int FRAME_HEIGHT = 250; 
    private static final int AREA_ROWS = 10; 
    private static final int AREA_COLUMNS = 30; 
    private static final double DEFAULT_RATE = 5; 
    private static final double INITIAL_BALANCE = 1000; 
    private JLabel rateLabel; 
    private JTextField rateField; 
    private JButton btnInterest, btnExit; 
    private JTextArea resultArea; 
    private double balance; 



    public InvestmentFrame() { 
    balance = INITIAL_BALANCE; 
    resultArea = new JTextArea(AREA_ROWS, AREA_COLUMNS); 
    resultArea.setText(balance + "\n"); 
    resultArea.setEditable(false); 
    this.createTextField(); 
    this.createButton(); 
    this.createPanel(); 

    this.setSize(FRAME_WIDTH, FRAME_HEIGHT); 

    } 

    private void createTextField() { 
    rateLabel = new JLabel("Interest Rate: "); 
    final int FIELD_WIDTH = 10; 
    rateField = new JTextField(FIELD_WIDTH); 
    rateField.setText("" + DEFAULT_RATE); 
    } 


    class AddInterestListener implements ActionListener { 
    @Override 
    public void actionPerformed(ActionEvent event) { 
     try { 
     double rate = Double.parseDouble(rateField.getText()); 
     if (rate < 0) { 
      throw new IllegalArgumentException(); 
     } 
     double interest = balance * rate/100; 
     balance = balance + interest; 
     resultArea.append(balance + "\n"); 
     } catch (Exception exception) { 
     JOptionPane.showMessageDialog(null, "Rate is a positive floating-point number.", 
             "Invalid rate value entered!", JOptionPane.ERROR_MESSAGE); 
     } 
    } 
    } 

    private class CloseListener implements ActionListener{ 

    public void actionPerformed(ActionEvent e) { 
     System.exit(0); 

    } 
    } 

    private void createButton() { 
    btnInterest = new JButton("Add Interest"); 
    btnExit = new JButton("Close"); 

    ActionListener listener = new AddInterestListener(); 
    btnInterest.addActionListener(listener); 
    btnExit.addActionListener(listener); 
    } 

    private void createPanel() { 
    JPanel panel = new JPanel(); 
    panel.add(rateLabel); 
    panel.add(rateField); 
    panel.add(btnInterest); 
    panel.add(btnExit); 
    JScrollPane scrollPane = new JScrollPane(resultArea); 
    panel.add(scrollPane); 
    this.add(panel); 
    } 
} 

Und das ist der Viewer

import javax.swing.JFrame; 

/** 
This program shows the growth of an investment. 
*/ 
public class InvestmentViewer { 
    public static void main(String[] args) 
    { 
    JFrame frame = new InvestmentFrame(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
    } 

} 

Antwort

1

Sie nicht in der Nähe Zuhörer auf Ihre Exit-Button hinzufügen. Daher wird die Anwendung nicht geschlossen.

ActionListener listener = new AddInterestListener(); 
btnInterest.addActionListener(listener); 
btnExit.addActionListener(listener); 

Der richtige Weg:

btnExit.addActionListener(new CloseListener()); 
+0

danken Ihnen dies das Problem behoben – Ivawen

+0

gerade eine andere Aktion Listener erstellen und alle Felder gesetzt Texte auf Standard. Es gibt keinen einfachen Weg, dies zu tun. –

+0

jawohl, die sehr hilfreich war danke – Ivawen