How do I add a quit button to this program? How about "clear"?
10,669
First declare the buttons and initialize them:
JButton exitButton = new JButton("Exit");
JButton clearButton = new JButton("Clear");
Then, make sure the butPanel has a layout and the panel is added to the content pane:
butPanel.setLayout(new FlowLayout());
getContentPane().add(butPanel);
Then add the action listeners on the new buttons:
exitButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
clearButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// TODO: clear the stuff here
}
});
Author by
javanoob
Updated on June 04, 2022Comments
-
javanoob almost 2 years
I need to add a button that "clears the calculator" and also one that quits the program on the butPanel. It also needs to be very basic Java code because I am a beginner and have an awful comp.sci. teacher. I have a sample of code that has the quit button, but I am unsure of how to put it into MY program. I've tried so much. Also if there is a better way to "error-check" that would be much appreciated.
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator2 extends JFrame implements ActionListener { JLabel heading = new JLabel ("2. Calculator"); JLabel intro1 = new JLabel ("This program stimulates a four-function calculator."); JLabel intro2 = new JLabel ("It takes an operator and a number. It can add, subtract,"); JLabel intro3 = new JLabel (" multiply and divide. Enter in the format eg. '+35'. "); JLabel inLabel = new JLabel (" Operation: "); JLabel outLabel = new JLabel (" Total: "); JTextField inOper = new JTextField (7); JTextField outTota = new JTextField (7); // intro //panels JPanel titlePanel = new JPanel (); JPanel intro1Panel = new JPanel (); JPanel intro2Panel = new JPanel (); JPanel intro3Panel = new JPanel (); JPanel operPanel = new JPanel (); JPanel totaPanel = new JPanel (); JPanel butPanel = new JPanel (); String operTemp; String totaTemp; public Calculator2 () { setTitle ("C - 2."); inOper.addActionListener (this); outTota.setEditable (false); getContentPane ().setLayout (new FlowLayout ()); titlePanel.add (heading); intro1Panel.add (intro1); intro2Panel.add (intro2); intro3Panel.add (intro3); operPanel.add (inLabel); operPanel.add (inOper); totaPanel.add (outLabel); totaPanel.add (outTota); //adds components to panels getContentPane ().add (titlePanel); getContentPane ().add (intro1Panel); getContentPane ().add (intro2Panel); getContentPane ().add (intro3Panel); getContentPane ().add (operPanel); getContentPane ().add (totaPanel); //Adds panels to Frame setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); } public static int isInteger (String input) { try { Integer.parseInt (input); return Integer.parseInt (input); } catch (NumberFormatException nfe) { return 0; } } //isInteger method // The application public String calculate (String operation, String newtotal) { int total = isInteger (newtotal); String totalS; char operator; int number = 0; operator = operation.charAt (0); if (operator == '+') { number = isInteger (operation.substring (1)); total = total + number; totalS = Integer.toString (total); } else if (operator == '-') { number = isInteger (operation.substring (1)); total = total - number; totalS = Integer.toString (total); } else if (operator == '*') { number = isInteger (operation.substring (1)); total = total * number; totalS = Integer.toString (total); } else if (operator == '/') { number = isInteger (operation.substring (1)); total = total / number; totalS = Integer.toString (total); } else { totalS = ("ERROR"); } if (number == 0) { totalS = ("ERROR"); } return totalS; } // calculate method public void actionPerformed (ActionEvent evt) { String userIn = inOper.getText (); String totalIn = outTota.getText (); try { totaTemp = calculate (userIn, totalIn); outTota.setText (totaTemp + ""); } catch (Exception ex) { outTota.setText ("ERROR"); } repaint (); } public static void main (String[] args) { Calculator2 calc = new Calculator2 (); calc.setSize (350, 350); calc.setResizable (false); calc.setVisible (true); } }