Saludos,
En solucion de tu problema, he de advertirte que si vas a compilar el Applet para ejecutarlo en el Explorador de internet, a ninguno les gusta el JOptionPane o similares frames que se creen.
De todas maneras me he tomado la libertad de ponerle algo interesante
Cambios:
llamar a super.paint(g); para baciar el buffer
g.dispose(); llama para avisar que ya has terminado de usarlo
en el init() he puesto el manejador de "Reset"
en el start() llamamos al primer "Reset"
creado el metodo de reset, que inserta los datos dentro de x1
Cambiados varios codigos de colores que no te servian para nada
Espero haberte ayudado,
-Ismaw34
En solucion de tu problema, he de advertirte que si vas a compilar el Applet para ejecutarlo en el Explorador de internet, a ninguno les gusta el JOptionPane o similares frames que se creen.
De todas maneras me he tomado la libertad de ponerle algo interesante
Código (java) [Seleccionar]
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JOptionPane;
public class AppletGrafica extends Applet {
int x1[] = new int[5];
public void init() {
this.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent arg0) {
}
@Override
public void keyReleased(KeyEvent arg0) {
if (arg0.getKeyCode() == KeyEvent.VK_R) {
insertaDatos();
}
}
@Override
public void keyPressed(KeyEvent arg0) {
}
});
}
public void start() {
insertaDatos();
}
public void insertaDatos() {
int x;
for (int i = 0; i < 5; i++) {
x = Integer.parseInt(JOptionPane.showInputDialog(null, "digite f(x) " + (i + 1)));
//pedimos al usuario que dijite 5 valores de x y los guardamos en un arreglo
x1[i] = x;
}
repaint();
}
public void ejeXyY(Graphics a) {
a.drawLine(50, 275, 500, 275);//eje x
a.drawLine(275, 50, 275, 500);//eje y
}
public void divisionPlano(Graphics a) {
for (int i = 0; i < 19; i++) { // se dibuja la division del plano
a.drawLine(273, 50 + (25 * i), 277, 50 + (25 * i));
a.drawLine(50 + (25 * i), 273, 50 + (25 * i), 277);
}
int j = -1;
for (int i = -9; i <= 9; i++) { // dibujamos los numero del eje X y eje Y
j++;
String x = Integer.toString(i);
a.drawString(x, 50 + (25 * j), 273);
}
int h = -1;
for (int i = 9; i >= -9; i--) {
String x = Integer.toString(i);
h++;
if (!"0".equals(x)) {
a.drawString(x, 263, 50 + (25 * h));
}
}
}
public void paint(Graphics a) {
super.paint(a);
a.setColor(Color.BLACK);
ejeXyY(a);
divisionPlano(a);
int menor = 10;
int max = -10;
for (int i = 0; i < 5; i++) {
if (x1[i]< 10 && x1[i] > -10) {
a.fillOval (275+(x1[i] * 25),275+(x1[i] *-25),2,2);//vamos dibujando los puntos que ingresa el usuario
a.drawOval (275+(x1[i] * 25),275+(x1[i] *-25),2,2);}
}
for (int i = 0; i < 5; i++) { // saco menor numero y el mayor del arreglo para hacer la recta
// System.out.println(n);
if (x1[i] < menor) {
menor = x1[i];
System.out.println("este es el menor " + menor);
}
}
for (int i = 0; i < 5; i++) {
// System.out.println(n);
if (x1[i] > max) {
max = x1[i];
System.out.println("este es el mayor " + max);
}
}
a.drawString("Re inserta datos con \"R\"", 10, 10);
a.drawLine(275 + (menor * 25), 275 + (menor * -25), 275 + (max * 25), 275 + (max * -25));// se dibuja la recta.
a.dispose();
}
}
Cambios:
llamar a super.paint(g); para baciar el buffer
g.dispose(); llama para avisar que ya has terminado de usarlo
en el init() he puesto el manejador de "Reset"
en el start() llamamos al primer "Reset"
creado el metodo de reset, que inserta los datos dentro de x1
Cambiados varios codigos de colores que no te servian para nada
Espero haberte ayudado,
-Ismaw34