import java.applet.*;
import java.awt.*;
import java.awt.event.*;
// en un campo de texto. Se crean los campos de texto necesarios
// resultado del producto.
// Se hace subclase de la clase Applet
public class ProductoMat extends Applet
{
int Dim = 0;
TextField TF1[][], TF2[][];
TextField TFOrden;
Button BIgual;
Label LX;
boolean Pintar = false;
int Xdib, Ydib;
int RESP[][];
public void init()
{
Label LOrden = new Label("Orden: "); // Etiqueta
LX = new Label("x");
TFOrden = new TextField(); // Campo de texto
Button BCrear = new Button("Crear"); // Boton
Button BLimpiar = new Button("Limpiar"); // Boton
BIgual = new Button("=");
// Fijar el contenedor
setLayout(null);
add(LOrden); add(BCrear); add(BLimpiar); add(TFOrden); add(BIgual); add(LX);
// Posicionamiento en el contenedor
//LOrden.setBounds(x, y, ancho, alto)
LOrden.setBounds(10, 10, 80, 30);
TFOrden.setBounds(100, 10, 80, 30);
BCrear.setBounds(10, 50, 80, 30);
BLimpiar.setBounds(100, 50, 80, 30);
// Captura de los eventos
BCrear.addActionListener(new EventoBoton());
BLimpiar.addActionListener(new EventoBoton());
BIgual.addActionListener(new EventoBoton());
BIgual.setVisible(false);
Pide_Datos(Dim);
}
public void paint(Graphics R)
{
int x = 0, y = Ydib;
int Ancho = 30, Alto = 30;
String CAD = "";
if (Pintar)
{
for (int r = 0; r < Dim; r++)
{
x = Xdib + 10;
for (int c = 0; c < Dim; c++)
{
CAD = "" + RESP[r][c];
x += Ancho + 2; // El 2 es por la separaciòn entre celdas
R.drawRect(x,y, Ancho, Alto);
R.drawString(CAD, x+Ancho/2-CAD.length()/2*8, y+Alto/2);
}
y += Alto + 2; // El 2 es por la separaciòn entre celdas
}
}
else
}
// Hacer invisibles a los componentes que conforman las matrices
void Limpia_Datos(int Dim)
{
for (int r = 0; r < Dim; r++)
for (int c = 0; c < Dim; c++)
{
TF1[r][c].setVisible(false);
TF2[r][c].setVisible(false);
}
BIgual.setVisible(false);
Pintar = false;
repaint();
}
void Pide_Datos(int Dim)
{
TF1 = new TextField[Dim][Dim]; // Dimensionamiento
TF2 = new TextField[Dim][Dim];
int x = 50, y = 100, r;
for (r = 0; r < Dim; r++)
{
x = 50;
for (int c = 0; c < Dim; c++)
{
TF1[r][c].setBounds(x, y, 30, 30); // Posicionamiento en el contenedor
TF2[r][c] = new TextField();
add(TF2[r][c]);
TF2[r][c].setBounds(x+35*Dim+50, y, 30, 30);
x += 35;
}
y += 35;
}
LX.setBounds(50 + 35*Dim, 90 + 35 * Dim/2, 30, 30);
Xdib = x+35*Dim+50;
Ydib = 100 + 30*Dim / 2;
BIgual.setBounds(Xdib, Ydib, 20, 20);
}
public class EventoBoton implements ActionListener
{
public void actionPerformed(ActionEvent RAFA)
{
String Boton = RAFA.getActionCommand();
Dim = Integer.parseInt(TFOrden.getText());
// Se compara con "Crear"
if (Boton.equals("Crear"))
{
Pide_Datos(Dim);
BIgual.setVisible(true);
}
if (Boton.equals("Limpiar"))
Limpia_Datos(Dim);
if (Boton.equals("="))
{
Producto();
}
}
}
void Producto()
{
RESP = new int[Dim][Dim];
for (int r1 = 0; r1 < Dim; r1++)
{
for (int c1 = 0; c1 < Dim; c1++)
{
RESP[r1][c1] = 0;
for (int r2 = 0; r2 < Dim; r2++)
RESP[r1][c1] += Integer.parseInt(TF1[r1][r2].getText()) * Integer.parseInt(TF2[r2][c1].getText());
}
}
Pintar = true;
repaint();
}
}