Foros del Web » Programación para mayores de 30 ;) » Java »

Este codigo fuente sirve tamto para una aplicacion o un applet?

Estas en el tema de Este codigo fuente sirve tamto para una aplicacion o un applet? en el foro de Java en Foros del Web. Tengo un codigo que compilo y al correrlo funciona correctamente como aplicacion de escritorio, el mismo lo compilo para obtener un applet, lo firmo, lo ...
  #1 (permalink)  
Antiguo 05/05/2009, 10:31
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 203
Antigüedad: 22 años, 4 meses
Puntos: 0
Este codigo fuente sirve tamto para una aplicacion o un applet?

Tengo un codigo que compilo y al correrlo funciona correctamente como aplicacion de escritorio, el mismo lo compilo para obtener un applet, lo firmo, lo pongo en una pagina.html y funciona con las siguientes salvedades:

Primero no se ejecuta dentro del explorador sino como si fuera una aplicacion de escritorio, es decir en una ventanita o como si fuera un programa aparte de explorador, se entiende?

Segundo en el propio explorador me da un error el cual copio desde la consola java aqui:

java.lang.ClassCastException: LeerArchivo.LeerArchivo cannot be cast to java.applet.Applet
at sun.plugin2.applet.Plugin2Manager.createApplet(Unk nown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionR unnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Excepción: java.lang.ClassCastException: LeerArchivo.LeerArchivo cannot be cast to java.applet.Applet



LA PREGUNTA este codigo sirve tanto para compilar la aplicación para escritorio como para un applet? de no ser posible esto que tendria que cambiar en el codigo para que el applet corra dentro del propio navegador???

Desde ya muchas gracias!!!

PD: aqui les dejo el codigo que use para hacer el applet

Código PHP:
package Grabador;


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.sound.sampled.*;

public class 
Grabador extends JFrame{

AudioFormat audioFormat;
TargetDataLine targetDataLine;

final 
JButton captureBtn =
new 
JButton("Capturar");
final 
JButton stopBtn = new JButton("Parar");

final 
JPanel btnPanel = new JPanel();
final 
ButtonGroup btnGroup = new ButtonGroup();
final 
JRadioButton aifcBtn =
new 
JRadioButton("AIFC");
final 
JRadioButton aiffBtn =
new 
JRadioButton("AIFF");
final 
JRadioButton auBtn =//selected at startup
new JRadioButton("AU");
final 
JRadioButton sndBtn =
new 
JRadioButton("SND");
final 
JRadioButton waveBtn =
new 
JRadioButton("WAV",true);

public static 
void mainString args[]){
new 
Grabador();
}
//end main

public Grabador(){//constructor
captureBtn.setEnabled(true);
stopBtn.setEnabled(false);

//Register anonymous listeners
captureBtn.addActionListener(
new 
ActionListener(){
public 
void actionPerformed(
ActionEvent e){
captureBtn.setEnabled(false);
stopBtn.setEnabled(true);
//Capture input data from the
// microphone until the Stop button is
// clicked.
captureAudio();
}
//end actionPerformed
}//end ActionListener
);//end addActionListener()

stopBtn.addActionListener(
new 
ActionListener(){
public 
void actionPerformed(
ActionEvent e){
captureBtn.setEnabled(true);
stopBtn.setEnabled(false);
//Terminate the capturing of input data
// from the microphone.
targetDataLine.stop();
targetDataLine.close();
}
//end actionPerformed
}//end ActionListener
);//end addActionListener()

//Put the buttons in the JFrame
getContentPane().add(captureBtn);
getContentPane().add(stopBtn);

//Include the radio buttons in a group
btnGroup.add(aifcBtn);
btnGroup.add(aiffBtn);
btnGroup.add(auBtn);
btnGroup.add(sndBtn);
btnGroup.add(waveBtn);

//Add the radio buttons to the JPanel
btnPanel.add(aifcBtn);
btnPanel.add(aiffBtn);
btnPanel.add(auBtn);
btnPanel.add(sndBtn);
btnPanel.add(waveBtn);

//Put the JPanel in the JFrame
getContentPane().add(btnPanel);

//Finish the GUI and make visible
getContentPane().setLayout(new FlowLayout());
setTitle("Copyright 2009, fad");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300,120);
setVisible(true);
}
//end constructor

//This method captures audio input from a
// microphone and saves it in an audio file.
private void captureAudio(){
try{
//Get things set up for capture
audioFormat getAudioFormat();
DataLine.Info dataLineInfo =
new 
DataLine.Info(
TargetDataLine.class,
audioFormat);
targetDataLine = (TargetDataLine)
AudioSystem.getLine(dataLineInfo);

//Create a thread to capture the microphone
// data into an audio file and start the
// thread running. It will run until the
// Stop button is clicked. This method
// will return after starting the thread.
new CaptureThread().start();
}catch (
Exception e) {
e.printStackTrace();
System.exit(0);
}
//end catch
}//end captureAudio method

//This method creates and returns an
// AudioFormat object for a given set of format
// parameters. If these parameters don't work
// well for you, try some of the other
// allowable parameter values, which are shown
// in comments following the declarations.
private AudioFormat getAudioFormat(){
float sampleRate 44100.0F;
//8000,11025,16000,22050,44100
int sampleSizeInBits 16;
//8,16
int channels 1;
//1,2
boolean signed true;
//true,false
boolean bigEndian false;
//true,false
return new AudioFormat(sampleRate,
sampleSizeInBits,
channels,
signed,
bigEndian);
}
//end getAudioFormat
//=============================================//

//Inner class to capture data from microphone
// and write it to an output audio file.
class CaptureThread extends Thread{
public 
void run(){
AudioFileFormat.Type fileType null;
File audioFile null;

//Set the file type and the file extension
// based on the selected radio button.
if(aifcBtn.isSelected()){
fileType AudioFileFormat.Type.AIFC;
audioFile = new File("junk.aifc");
}else if(
aiffBtn.isSelected()){
fileType AudioFileFormat.Type.AIFF;
audioFile = new File("junk.aif");
}else if(
auBtn.isSelected()){
fileType AudioFileFormat.Type.AU;
audioFile = new File("junk.au");
}else if(
sndBtn.isSelected()){
fileType AudioFileFormat.Type.SND;
audioFile = new File("junk.snd");
}else if(
waveBtn.isSelected()){
fileType AudioFileFormat.Type.WAVE;
audioFile = new File("test.wav");
}
//end if

try{
targetDataLine.open(audioFormat);
targetDataLine.start();
AudioSystem.write(
new 
AudioInputStream(targetDataLine),
fileType,
audioFile);
}catch (
Exception e){
e.printStackTrace();
}
//end catch

}//end run
}//end inner class CaptureThread
//=============================================//

}//end outer class Grabador.java 
__________________
:) Fernando Dichiera (:
[email protected]
  #2 (permalink)  
Antiguo 05/05/2009, 23:04
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Este codigo fuente sirve tamto para una aplicacion o un applet?

Hola:

Tu clase hereda de JFrame, por lo que no es un Applet. Para que sea Applet, debe heredar de Applet o de JApplet, por eso el error del navegador.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 06/05/2009, 01:11
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 203
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: Este codigo fuente sirve tamto para una aplicacion o un applet?

Entonces si reemplazo cada vez que aparece JFrame por JApplet deberia de funcionar correctamente y dentro de la pagina web? solo eso o vez algun otro error en el codigo? Desde ya muchas gracias!!!
__________________
:) Fernando Dichiera (:
[email protected]
  #4 (permalink)  
Antiguo 06/05/2009, 12:45
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Este codigo fuente sirve tamto para una aplicacion o un applet?

Hola:

Además de reemplazar JFrame por JApplet, tienes que quitar/cambiar el método main() y poner el método init() o start() del JApplet. Aquí tienes un ejemplo básico de Applet.

También veo que el código intenta usar el micrófono, reproducir audio o algo de eso. Posiblemente eso te dé problemas de permisos al ponerlo en un applet y tendrás que firmarlo digitalmente.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 08/05/2009, 16:15
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 203
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: Este codigo fuente sirve tamto para una aplicacion o un applet?

Muchisimas gracias, ya esta funcionando correctamente, previo firma digital!

Salu2!!!
__________________
:) Fernando Dichiera (:
[email protected]
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:38.