1- Como eu faço para sair do loop no JOptionPane;
2- E Como posso fazer para incluir no case para que eu possa modificar a entrada dos dados na JOptionPane.
Ficarei imensamente grato pela ajuda de vc’s abaixo o código:
import net.java.games.jogl.GLCanvas;
import net.java.games.jogl.GLCapabilities;
import net.java.games.jogl.GLDrawableFactory;
import net.java.games.jogl.Animator;
import net.java.games.jogl.GL;
import net.java.games.jogl.GLEventListener;
import net.java.games.jogl.GLDrawable;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent ;
import java.awt.event.<em>;
import javax.swing.</em>;
import java.awt.Container;
public class Segundo {
// construtor
Segundo() {
//Cria um canvas
GLCanvas canvas = GLDrawableFactory.getFactory().createGLCanvas(new GLCapabilities());
//Adiciona o listener ao canvas
SegundoListener li = new SegundoListener ();
canvas.addGLEventListener (li);
canvas.addKeyListener (li);
// Adiciona o listener ao canvas
//canvas.addGLEventListener(new SegundoListener());
//Ccria e configura um frame
Frame f = new Frame("Segundo exemplo JOGL");
f.setSize(400, 400);
//Adiciona o canvas GL ao frame AWT
f.add(canvas);
//Exibe
f.setVisible(true);
//teclado será ativado assim q entrar
canvas.requestFocus();
// Configura a janela para fechar o aplicativo
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
//cria o aplicativo com o desenho
public static void main(String[] args) {
new Segundo();
}
// Desenha um triângulo
private void desenhaFigura(GL gl) {
[color="#444444"][color=red] int x1 = 0, y1 = 0 , x2 = 0, y2 = 0, y3 = 0;
String msg;
msg = JOptionPane.showInputDialog("Digite o ponto x1");
x1 = Integer.parseInt(msg);
msg = JOptionPane.showInputDialog("Digite o ponto y1");
y1 = Integer.parseInt(msg);
msg = JOptionPane.showInputDialog("Digite o ponto x2");
x2 = Integer.parseInt(msg);
msg = JOptionPane.showInputDialog("Digite o ponto y2");
y2 = Integer.parseInt(msg);
msg = JOptionPane.showInputDialog("Digite o ponto y3");
y3 = Integer.parseInt(msg); [/color][/color]
gl.glBegin(GL.GL_TRIANGLES);
gl.glVertex2f(x1, y1); // -25 -25
gl.glVertex2f(x2, y2); // 25 -25
gl.glVertex2f( 0, y3); // 0 25
gl.glEnd();
}
// Implementa a interface de eventos do GL e awt respectivamente
class SegundoListener implements GLEventListener, KeyListener {
private double left, right, botton, top;
public void setWindow(GL gl){
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrtho(left, right, botton, top,0,1);
}
// chamado uma vez quando o GL é inicializado
public void init(GLDrawable drawable) {
left = -30; right = 30; botton = - 30; top = 30;
GL gl = drawable.getGL ();
gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); //erasing color
gl.glColor3f(1.0f, 1.0f, 1.0f); // drawing color
}
//chamado toda vez que o canvas precisar ser atualizado
public void display(GLDrawable drawable) {
GL gl = drawable.getGL();
SetWindow(gl); //carrega a nova window
gl.glClear(GL.GL_COLOR_BUFFER_BIT);// limpa a tela com a cor do gl clear color
desenhaFigura(gl); //desenha a figura
gl.glFlush(); //pede prioridade na atualização do desenho
}
private void SetWindow(GL gl){
gl.glMatrixMode(GL.GL_PROJECTION); // define o padrão a ser trabalhado pela gl
gl.glLoadIdentity(); // fixa a matrix multiplicando a matrix pela sua identidade
gl.glOrtho(left, right, botton, top, 0, 1); //atualiza a window
}
// chamado toda vez que o tamanho da janela do aplicativo for alterado
public void reshape(GLDrawable drawable,int x,int y,int width, int height) {
GL gl = drawable.getGL();
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrtho(-30, 30, -30, 30, 0, 1);
}
// chamado quando houver alteração no modo ou no dispositivo de exibição
// não todo previsto mas não implementado no JOGL
// Deve existir para satisfazer a definição da interface
public void displayChanged(GLDrawable drawable,boolean modeChanged,boolean deviceChanged)
{
}
public void keyPressed (KeyEvent k) {}
public void keyReleased (KeyEvent k) {}
public void keyTyped (KeyEvent k)
{
double Xc,Yc, l, a;
Xc = (left + right)/2; //calcula o centro x
l = right - left; //calcula a largura
Yc = (top + botton)/2;//calcula o centro y
a = top -botton; // calcula a altura
switch(k.getKeyChar()){
case '+':
l*=0.95;
a*=0.95;
right = Xc +l/2;
left = Xc - l/2;
botton = Yc - a/2;
top = Yc + a/2;
System.out.println("Zoom +");
break;
case '-':
l*=1.05;
a*=1.05;
right = Xc +l/2;
left = Xc - l/2;
botton = Yc - a/2;
top = Yc + a/2;
System.out.println("Zoom -");
break;
case 'e':case'E': case'4':
right+=0.05*l;
left+=0.05*l;
System.out.println("esquerda");
break;
case 'd':case'D': case'6':
right-=0.05*l;
left-=0.05*l;
System.out.println("direita");
break;
case 'c':case'C': case'8':
top-=0.05*a;
botton-=0.05*a;
System.out.println("cima");
break;
case 'B':case'b':case'2':
top+=0.05*a;
botton+=0.05*a;
System.out.println("baixo");
break;
[color="blue"]case 't':case 'T':case '1':
System.out.println("Modificar o triangulo");
break;
[/color]
case KeyEvent.VK_ESCAPE:
System.exit(0);
}
GLCanvas canvas = (GLCanvas)k.getSource(); // retorna o objeto de interface associado a ocorrencia do evento.
canvas.display();
}
}
}
[color=“red”][/color][color="#444444"][/color]