Pessoal, tenho o exemplo abaixo de
uma calculadora, utilizando um único Applet, como eu faria para que os botões da
calculadora ficassem separados do resultado, utilizando para isso "Applets que
se comunicam"?
Nicéia
// Calculadora
import java.awt.*;
import java.awt.event.*; class CalcListener implements
ActionListener
{ private TextArea display; protected double
ultimoValor = 0, // penultimo valor
usado
valor = 0; // valor mostrado no display protected char ultimaOp = ' '; //+,-,*,/ protected boolean novoNumero = true, // proximo digito digitado ultimoIgual = false; // permite repeticoes String displayMemo = ""; double decimal = 1; // potencia a multiplicar digitos decimais CalcListener
(TextArea ta)
{ display = ta; } private void
operacao (String s)
{ displayMemo = s + '\n' + display.getText(); display.setText(displayMemo); } private void resultado(double x) { valor = x; displayMemo = x + "" + '\n' + " = " + '\n' + display.getText(); display.setText(displayMemo); } private void update (double x) { if (x == -1) { displayMemo = ""; x = 0; } valor = x; display.setText(String.valueOf(valor) + '\n' + displayMemo);; } public void actionPerformed (ActionEvent ev) { String label = ev.getActionCommand(); //getActionCommand(); char k = label.charAt(0); switch(k) { case '.': if (novoNumero) { valor = 0; novoNumero = false; } if (decimal ==1) // evita duplo uso decimal = 10; break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': // bug: digitar 0.000...x mostra apenas // "0" enquanto x != '0' nao e' digitado if (novoNumero) { valor = 0; novoNumero = false; } if (decimal > 1) { valor = valor + (k - '0')/decimal; decimal *=10; } else valor = valor * 10 + (k - '0'); update(valor); break; case 'C': update (-1); decimal = 1; break; case
'+': case '-': case '*': case '/':
ultimaOp = k; novoNumero =
true;
ultimoValor = valor; ultimoIgual = false; decimal = 1; operacao(k + ""); break; case '=': if (! ultimoIgual) { // para repetir ultima operacao, troca ultimo valor com valor double ultimo = ultimoValor; ultimoValor = valor; valor = ultimo; } switch (ultimaOp) { case '+': resultado (valor + ultimoValor); break; case '-': resultado (valor - ultimoValor); break; case '*': resultado (valor * ultimoValor); break; case '/': // falta testar div por 0 resultado (valor / ultimoValor); break; } novoNumero = true; ultimoIgual = true; decimal = 1; } } } public class CalcPad11 extends java.applet.Applet { protected TextArea display; private void setButton(Container where, GridBagLayout m, GridBagConstraints c, String name, int x, int y, int w, int h, CalcListener c1) { c.gridx = x; c.gridy = y; c.gridwidth = w; c.gridheight = h; c.weightx = c.weighty = 1.0; Button b = new Button (name); m.setConstraints(b,c); where.add(b); b.addActionListener(c1); } public void init()
{ display = new TextArea(12,1); display.setForeground(Color.blue); display.setBackground(Color.white); display.setEditable(false); setLayout (new BorderLayout
());
add ("North",display); Panel
keypad;
add("Center", (keypad = new Panel())); GridBagConstraints
c;
GridBagLayout manager = new GridBagLayout(); keypad.setLayout (manager); c=new
GridBagConstraints();
c.fill = GridBagConstraints.BOTH; CalcListener c1 = new
CalcListener(display);
setButton
(keypad,manager,c,"C",0,0,1,1,c1);
setButton (keypad,manager,c,"/",1,0,1,1,c1); setButton (keypad,manager,c,"*",2,0,1,1,c1); setButton (keypad,manager,c,"-",3,0,1,1,c1); setButton (keypad,manager,c,"7",0,1,1,1,c1); setButton (keypad,manager,c,"8",1,1,1,1,c1); setButton (keypad,manager,c,"9",2,1,1,1,c1); setButton (keypad,manager,c,"4",0,2,1,1,c1); setButton (keypad,manager,c,"5",1,2,1,1,c1); setButton (keypad,manager,c,"6",2,2,1,1,c1); setButton (keypad,manager,c,"1",0,3,1,1,c1); setButton (keypad,manager,c,"2",1,3,1,1,c1); setButton (keypad,manager,c,"3",2,3,1,1,c1); setButton (keypad,manager,c,"+",3,1,1,2,c1); setButton (keypad,manager,c,"=",3,3,1,2,c1); setButton (keypad,manager,c,"0",0,4,2,1,c1); setButton (keypad,manager,c,".",2,4,1,1,c1); } } |
- Re: [java-list] Applets que se comunicam Nijava
- Re: [java-list] Applets que se comunicam Guilherme
- Re: [java-list] Applets que se comunicam Lincolm Ferreira de Aguiar
- [java-list] Finalizar Um Processo Guilherme