Olá Nicéia, como está?
Olha, se você quer é que o visor da
calculadora fique em um applet e os botões em outros, basta criar as classes do
jeito que quer, ou seja, uma só com o visor, outra só com os botões. Para
atribuir o valor dos botões ao visor você usará JavaScript da seguinte
forma:
Se estiver confuso, te explico
melhor.
//------------------------ Este
código ficará no applet dos botões.
-------------------------------------------- import
netscape.javascript.*; (...)
//Este método fará as chamadas da função atribuirValorApplet() public
void atribuirValor(String valor){
try{
win = JSObject.getWindow(this);
} catch(JSException e){
exibirErro(ejs.toString()); return;
}
try{
Object msgErro[] = new Object[1];
msgErro[0] = valor;
Object obj = win.call("atribuirValorApplet",
msgErro);
} catch(JSException ejs){
exibirErro(ejs.toString()); return;
}
}
public void exibirErro(String erro){
getAppletContext().showStatus(erro);
} //------------------------------- Final do código no applet dos botoes
--------------------------------------------------
//------------------------------- Este código fica no applet do visor
--------------------------------------------------
public setValor(String valor){
nomeDoSeuTextField.setText(valor);
}
//------------------------------- Final do código no applet do visor
--------------------------------------------------
<!-- Este código ficará no HTML onde estão os applets -->
<script language="JavaScript">
function atribuirValorApplet(valor){
var appletVisor =
document.getElementById("idDoAppletDoVisor"); //Este id é o atributo
id="nomeDoApplet" na tag applet. Desta forma funcionará independente se o
usuário usa Java Plug-in ou JVM normal.
if(appletVisor){
appletVisor.setValor(valor);
}
}
</script>
<!-- Final do código no HTML
-->
Qualquer dúvida, pode
perguntar.
Original Message -----
Sent: Thursday, January 24, 2002 2:03
PM
Subject: [java-list] Applets que se
comunicam
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);
} }
|