import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class BorderJFrame extends JFrame { private JButton display; private JPanel jp; private boolean start; private String lastCommand; private double result; public BorderJFrame(){ this.setLayout(new BorderLayout()); this.result=0; this.start=true; this.lastCommand="="; this.display=new JButton("0"); this.display.setEnabled(false); add(display, BorderLayout.NORTH); ActionListener insert=new InsertAction(); ActionListener command=new CommandAction(); int k=7; this.setSize(300, 200); jp=new JPanel(); jp.setLayout(new GridLayout(4, 4)); for(int i=1;i<=4;i++){ for(int j=1;j<=4;j++){ if(j==4){ if(i==1){ this.addButton("/",command); }else if(i==2){ this.addButton("*",command); }else if(i==3){ this.addButton("-",command); } }else if(i==4){ this.addButton("0", insert); this.addButton(".",command); this.addButton("=",command); this.addButton("+",command); break; }else{ this.addButton(String.valueOf(k), insert); k++; } } k=k-6; } this.add(jp,BorderLayout.CENTER); } private class CommandAction implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { String command=e.getActionCommand(); if(start){ if(command.equals("-")){ display.setText(command); start=false; }else{ lastCommand=command; } }else{ calculate(Double.parseDouble(display.getText())); lastCommand=command; start=true; } } } private class InsertAction implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { String input=e.getActionCommand(); if(start){ display.setText(""); start=false; } display.setText(display.getText()+input); } } private void addButton(String label,ActionListener listener){ JButton button=new JButton(label); button.addActionListener(listener); this.jp.add(button); } public void calculate(double x){ if(lastCommand.equals("+"))result+=x; else if(lastCommand.equals("-"))result-=x; else if(lastCommand.equals("*"))result*=x; else if(lastCommand.equals("/"))result/=x; else if(lastCommand.equals("="))result=x; this.display.setText(""+result); } }