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

clase java que herede de applet

Estas en el tema de clase java que herede de applet en el foro de Java en Foros del Web. Buenas tengo una clase java que hereda de la siguiente javax.swing.JFrame, en esta clase se inicializan los componentes y demas y contiene el metodo main, ...
  #1 (permalink)  
Antiguo 26/10/2009, 01:41
 
Fecha de Ingreso: febrero-2009
Mensajes: 29
Antigüedad: 15 años, 3 meses
Puntos: 1
Exclamación clase java que herede de applet

Buenas tengo una clase java que hereda de la siguiente javax.swing.JFrame, en esta clase se inicializan los componentes y demas y contiene el metodo main, sin embargo esta misma clase quiero hacer que herede applet para convertirla en un applet y poder colgarla en la web, alguien sabe como puedo hacerlo? java no permite multiherencia, pero hay alguna posibilidad de hacerlo de otra manera?

Gracias y un saludo.
  #2 (permalink)  
Antiguo 26/10/2009, 02:51
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: clase java que herede de applet

Wenas

La herencia multiple en java, se soluciona con las intefaces.

Código:
public class tuClase extends JFrame implements Runnable
Saludos.
  #3 (permalink)  
Antiguo 26/10/2009, 08:00
 
Fecha de Ingreso: febrero-2009
Mensajes: 29
Antigüedad: 15 años, 3 meses
Puntos: 1
Exclamación Respuesta: clase java que herede de applet

Hola elAntonie, gracias por la respuesta, pero ahora se me presenta otro problema relacionado, y es que al ajecutarlo ya como applet, no llega a crearlo, y por la consola de java me tira el siguiente error :
cannot be cast to java.applet.Applet

Puede deberse a que esta clase pinta elementos con AWT? o quizá no he implementado bien el run?lo he dejado tal cual por defecto:

public void run() {
throw new UnsupportedOperationException("Not supported yet.");
}

quizá aqui tenga que llamar al main que tiene la aplicacion base?

Gracias y saludos.
  #4 (permalink)  
Antiguo 27/10/2009, 02:13
 
Fecha de Ingreso: febrero-2009
Mensajes: 29
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: clase java que herede de applet

Este es el error que me tira ahora por la consola java, cuando lo ejecuto como applet:

Código:
java.lang.reflect.InvocationTargetException
	at com.sun.deploy.util.DeployAWTUtil.invokeAndWait(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager.runOnEDT(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
	at javax.swing.ImageIcon.<init>(Unknown Source)
	at ui.JCDWriter.initComponents(JCDWriter.java:282)
	at ui.JCDWriter.<init>(JCDWriter.java:31)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Excepción: java.lang.reflect.InvocationTargetException
java.lang.NullPointerException
	at sun.plugin2.applet.Plugin2Manager.findAppletJDKLevel(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Excepción: java.lang.NullPointerException
y esto sale cuadno utilizo este codigo en el run:

public void run() {
new miclase().show();
throw new UnsupportedOperationException("Not supported yet.");
}

Saludos y gracias
  #5 (permalink)  
Antiguo 27/10/2009, 03:39
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: clase java que herede de applet

Ese codigo y ese error no me dice absolutamente nada.

Pon tu codigo completo, y el classpath que estas usando.

Saludos.
  #6 (permalink)  
Antiguo 27/10/2009, 06:48
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: clase java que herede de applet

Igual te convendría tener una clase de inicio tipo applet

public class tuClase extends Applet implements Runnable

y que por otra parte en el código haga un import de tu otra clase que hayas metido en un package de utilidades

public class tuClase2 extends JFrame
  #7 (permalink)  
Antiguo 27/10/2009, 06:53
 
Fecha de Ingreso: febrero-2009
Mensajes: 29
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: clase java que herede de applet

este es el codigo completo

Código:
/*
 * JCDWriter.java
 *
 * Created on November 20, 2002, 9:10 AM
 */

package ui;

import javax.swing.*;
import javax.swing.tree.*;
import java.net.InetAddress;
import java.awt.Cursor;
import java.util.ArrayList;
import java.io.*;
import java.awt.*;
import java.awt.event.*;


import model.*;
/**
 *
 * @author  rmallappa
 */
public class JCDWriter extends javax.swing.JFrame implements Runnable {
    
    String pathSeparator = "/";
    Object dragSource;
    
    /** Creates new form JCDWriter */
    public JCDWriter() {
        initComponents();
        initializeDragAndDropMechanism();
        initializeMKISOFS();
        
        initializeCDRECORDConfig();
        initializeApplicationSettings();
    }
    
    private void initComponents() {
        mainPanel = new javax.swing.JPanel();
        hostToVirtualSplitPane = new javax.swing.JSplitPane();
        topComponentPlaceHolder = new javax.swing.JLabel();
        bottomComponentPlaceHolder = new javax.swing.JLabel();
        statusBarPanel = new javax.swing.JPanel();
        statusBar = new javax.swing.JLabel();
        mainMenuBar = new javax.swing.JMenuBar();
        fileMenu = new javax.swing.JMenu();
        newLayout = new javax.swing.JMenuItem();
        loadLayout = new javax.swing.JMenuItem();
        saveLayout = new javax.swing.JMenuItem();
        saveLaoutAs = new javax.swing.JMenuItem();
        jSeparator1 = new javax.swing.JSeparator();
        printMenu = new javax.swing.JMenu();
        printVirtualFileSystemTree1 = new javax.swing.JMenuItem();
        printGraftPoints1 = new javax.swing.JMenuItem();
        jSeparator2 = new javax.swing.JSeparator();
        exit = new javax.swing.JMenuItem();
        editMenu = new javax.swing.JMenu();
        helpMenu = new javax.swing.JMenu();
        preferencesMenuItem = new javax.swing.JMenuItem();
        deleteMenuItem = new javax.swing.JMenuItem();
        insertMenuItem = new javax.swing.JMenuItem();
        aboutMenuItem = new javax.swing.JMenuItem();
        diskMenu = new javax.swing.JMenu();
        scanbusTest = new javax.swing.JMenuItem();
        recordFromISOImage = new javax.swing.JMenuItem();
        blankCD = new javax.swing.JMenuItem();
        createCDImage = new javax.swing.JMenuItem();
        calculateFileSystemSize = new javax.swing.JMenuItem();
        recordDirectly = new javax.swing.JMenuItem();
        
        setTitle("JCDWriter");
        setName("mainFrame");
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowOpened(java.awt.event.WindowEvent evt) {
                formWindowOpened(evt);
            }
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });
lo envio en dos trozos que si no no me cabe
  #8 (permalink)  
Antiguo 27/10/2009, 06:56
 
Fecha de Ingreso: febrero-2009
Mensajes: 29
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: clase java que herede de applet

Código:
  
        mainPanel.setLayout(new java.awt.BorderLayout());
        
        mainPanel.setPreferredSize(new java.awt.Dimension(600, 400));
        hostToVirtualSplitPane.setDividerSize(5);
        hostToVirtualSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
        hostToVirtualSplitPane.setLeftComponent(topComponentPlaceHolder);
        
        hostToVirtualSplitPane.setRightComponent(bottomComponentPlaceHolder);
        
        mainPanel.add(hostToVirtualSplitPane, java.awt.BorderLayout.CENTER);
        
        getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);
        
        statusBarPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
        
        statusBar.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        statusBar.setText(" ");
        statusBar.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
        statusBarPanel.add(statusBar);
        
        getContentPane().add(statusBarPanel, java.awt.BorderLayout.SOUTH);
  #9 (permalink)  
Antiguo 27/10/2009, 06:57
 
Fecha de Ingreso: febrero-2009
Mensajes: 29
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: clase java que herede de applet

buff, he tenido que cortar, porque la clase es muy extensa.

public static void main(String args[]) {
try{
new JCDWriter().show();
}
catch(Exception e) {
System.out.println("error: " + e.getMessage());
}
}

private void saveCDRECORDConfig() {
createConfigDir();
String configFileName = applicationSettings.getConfigDirectory() + "/" + applicationSettings.cdrecordConfigFileName;
File f = new File(configFileName);
cdrecord.saveToFile(f);
}

private void saveMKISOFSConfig() {
createConfigDir();
File f = new File(applicationSettings.getConfigDirectory() + "/" + applicationSettings.mkisofsConfigFileName);
mkisofs.saveToFile(f);
}

private void saveApplicationSettings() {

/* Application settings are saved on users home directory inside .jcdwriter
*/
File settingsDir = new File(System.getProperty("user.home") + "/.jcdwriter/");
String settingsFileName = settingsDir.getAbsolutePath() + "/jcdwriter.conf";

if (!settingsDir.exists()) {
JOptionPane.showMessageDialog(null, "Creating " + settingsFileName, "Creating jcdwriter.conf", JOptionPane.INFORMATION_MESSAGE);
settingsDir.mkdir();
};
File settingsFile = new File(settingsFileName);

applicationSettings.saveToFile(settingsFile);
}

private void initializeMKISOFS() {
File f = new File(applicationSettings.getConfigDirectory() + "/" + applicationSettings.mkisofsConfigFileName);
if(mkisofs == null) mkisofs = new MKISOFSCommand();
if(f.exists()) {
mkisofs.readFromFile(f);
}
}

private void initializeCDRECORDConfig() {
if(cdrecord == null) cdrecord = new CDRECORDConfiguration();
File f = new File(applicationSettings.getConfigDirectory() + "/" + applicationSettings.cdrecordConfigFileName);
if(f.exists()) {
cdrecord.readFromFile(f);
}
}

private void intializeStatusBar(){
virtualFileSystemPanel.setStatusBar(statusBar);
}


private void initializeApplicationSettings() {
File f = new File(applicationSettings.getConfigDirectory() + "/" + applicationSettings.appSettingsConfigFileName);
if(f.exists()) {
applicationSettings.readFromFile(f);
}
/* Initialize in case config file is missing */
if(applicationSettings == null) applicationSettings = new ApplicationSettings();
}

public void createConfigDir() {
File dir = new File(applicationSettings.getConfigDirectory());
if(!dir.exists()) {
JOptionPane.showMessageDialog(null, "Creating config directory: " + dir.getPath(), "Information", JOptionPane.INFORMATION_MESSAGE);
System.out.println("Creating config directory: " + dir.getPath());
dir.mkdirs();
}
}


private void saveDiskLayout() {
if(currentFile == null) {
JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
fc.setFileHidingEnabled(true);
fc.setDialogType(JFileChooser.SAVE_DIALOG);
fc.setMultiSelectionEnabled(false);
fc.showSaveDialog(this);
currentFile = fc.getSelectedFile();
}
if (currentFile != null) {
try {
FileOutputStream ostream = new FileOutputStream(currentFile);
ObjectOutputStream p = new ObjectOutputStream(ostream);
p.writeObject(virtualFileSystemPanel.getModel());
p.flush();
ostream.close();
}
catch(java.io.FileNotFoundException fnfe) {
System.out.println(fnfe);
}
catch(java.io.IOException ie) {
System.out.println(ie);
}
}
}

private void readDiskLayout() {
if (currentFile != null) {
try {
FileInputStream ostream = new FileInputStream(currentFile);
ObjectInputStream p = new ObjectInputStream(ostream);
virtualFileSystemPanel.setModel((DefaultTreeModel) p.readObject());
ostream.close();
}
catch(ClassNotFoundException cnfe) {
System.out.println(cnfe);
}
catch(java.io.FileNotFoundException fnfe) {
System.out.println(fnfe);
}
catch(java.io.IOException ie) {
System.out.println(ie);
}
}
}

private void aboutMenuItemActionPerformed(java.awt.event.Action Event evt){
JOptionPane.showMessageDialog(null, " Written by: Ram Mallappa", "jCDWriter " + versionID, JOptionPane.PLAIN_MESSAGE);
}

private javax.swing.JLabel topComponentPlaceHolder;
private javax.swing.JMenuItem saveLayout;
private javax.swing.JMenuItem saveLaoutAs;
private javax.swing.JSeparator jSeparator2;
private javax.swing.JMenuItem printVirtualFileSystemTree1;
private javax.swing.JMenu fileMenu;
private javax.swing.JMenu diskMenu;
private javax.swing.JMenuItem recordFromISOImage;
private javax.swing.JMenuItem recordDirectly;
private javax.swing.JMenuBar mainMenuBar;
private javax.swing.JMenuItem blankCD;
private javax.swing.JMenuItem createCDImage;
private javax.swing.JMenuItem scanbusTest;
private javax.swing.JPanel mainPanel;
private javax.swing.JLabel statusBar;
private javax.swing.JMenu printMenu;
private javax.swing.JLabel bottomComponentPlaceHolder;
private javax.swing.JMenuItem exit;
private javax.swing.JMenu editMenu;
private javax.swing.JMenu helpMenu;
private javax.swing.JMenuItem printGraftPoints1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JMenuItem loadLayout;
private javax.swing.JSplitPane hostToVirtualSplitPane;
private javax.swing.JMenuItem calculateFileSystemSize;
private javax.swing.JMenuItem newLayout;
private javax.swing.JMenuItem preferencesMenuItem;
private javax.swing.JMenuItem deleteMenuItem;
private javax.swing.JMenuItem insertMenuItem;
private javax.swing.JMenuItem aboutMenuItem;
private javax.swing.JPanel statusBarPanel;
private javax.swing.JPanel hostFileSystemPanel;
private VirtualFileSystemView virtualFileSystemPanel;
private javax.swing.JToolBar mainToolBar;
private javax.swing.JButton newLayoutButton;
private javax.swing.JButton openLayoutButton;
private javax.swing.JButton eraseDiskButton;
private javax.swing.JButton writeDiskImageButton;
private javax.swing.JButton writeDiskFromImageButton;
private javax.swing.JButton writeDiskButton;
private javax.swing.JButton editPreferencesButton;
CDRECORDConfiguration cdrecord = new CDRECORDConfiguration() ;
MKISOFSCommand mkisofs = new MKISOFSCommand() ;
ApplicationSettings applicationSettings = new ApplicationSettings() ;
String isoFileName;
File currentFile;
private static String versionID = "0.8.3";

public void run() {
new JCDWriter().show();
throw new UnsupportedOperationException("Not supported yet.");
}
}
  #10 (permalink)  
Antiguo 27/10/2009, 07:07
 
Fecha de Ingreso: febrero-2009
Mensajes: 29
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: clase java que herede de applet

Cita:
Iniciado por Fuzzylog Ver Mensaje
Igual te convendría tener una clase de inicio tipo applet

public class tuClase extends Applet implements Runnable

y que por otra parte en el código haga un import de tu otra clase que hayas metido en un package de utilidades

public class tuClase2 extends JFrame
hola fuzzylog, esto tambien lo he intentado de la siguiente manera:

Código:
package ui;

import java.applet.Applet;
import ui.JCDWriter;
/**
 *
 * @author jherraiz
 */
public class miapplet extends Applet implements Runnable {

    public void run() {
        new JCDWriter();
        throw new UnsupportedOperationException("Not supported yet.");
    }


}
pero lo que consigue es que carga el applet pero se queda en blanco y no tira ningun error por la consola de java.
sin embargo ejecutandolo con webstart funciona perfectamente de las dos maneras.
  #11 (permalink)  
Antiguo 27/10/2009, 09:39
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: clase java que herede de applet

http://bugs.sun.com/view_bug.do?bug_id=6881931

Pregunta. el applet esta firmado??

Saludos.
  #12 (permalink)  
Antiguo 27/10/2009, 09:42
 
Fecha de Ingreso: febrero-2009
Mensajes: 29
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: clase java que herede de applet

Si claro, porsupuesto, es necesario para que se pueda ejecutar ya que hace uso de ficheros en el cliente, con lo cual éste debe aceptar el certificado para poder ejecutarlo.

Saludos y gracias de nuevo, sigo investigando a ver que hago mal.
  #13 (permalink)  
Antiguo 27/10/2009, 10:07
 
Fecha de Ingreso: febrero-2009
Mensajes: 29
Antigüedad: 15 años, 3 meses
Puntos: 1
Exclamación Respuesta: clase java que herede de applet

Pregunta. el applet esta firmado??

Saludos.[/QUOTE]


Buenas, he estado comprobando el bug, y he actualizado java por si acaso, si lo ejecuto con java webstart funciona sin problemas, pero si lo incluyo como applet sigue fallando y muestra el siguiente error en la consola:

Código:
java.lang.reflect.InvocationTargetException
	at com.sun.deploy.util.DeployAWTUtil.invokeAndWait(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager.runOnEDT(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassCastException: ui.JCDWriter cannot be cast to java.applet.Applet
	at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Excepción: java.lang.reflect.InvocationTargetException
java.lang.NullPointerException
	at sun.plugin2.applet.Plugin2Manager.findAppletJDKLevel(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Excepción: java.lang.NullPointerException
ahora mismo lo tengo montado con una clase inicial que hereda de applet , implementa runnable e importa la otra clase la cual contiene un main, en el metodo run de la clase miapplet es donde creo una instancia de la clase del main, pero de tanto tocar ya no estoy seguro de si este main debe estar ahi.

Gracias y un saludo.
  #14 (permalink)  
Antiguo 27/10/2009, 11:06
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: clase java que herede de applet

Has mirado el enlace que te he puesto??
  #15 (permalink)  
Antiguo 27/10/2009, 13:04
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: clase java que herede de applet

Hola,

El problema es que tu Applet no puede extender JApplet y JFrame al mismo tiempo. Y si no usas JApplet no corre en el browser. Así que tienes que crear 2 puntos de entrada diferentes.

Código Java:
Ver original
  1. package JPuzzle;
  2.  
  3. import JPuzzle.Graphics.Panel;
  4. import java.lang.reflect.InvocationTargetException;
  5.  
  6. /**
  7.  * La aplicación principal del juego Puzzle.
  8.  * Funciona tanto como un Applet como una aplicación Desktop.
  9.  * @author HackmanGT
  10.  */
  11. public class Puzzle extends javax.swing.JApplet {
  12.  
  13.     private static Panel panel;
  14.  
  15.     /**
  16.      * Aplicación principal.
  17.      * Inicializa el Applet.
  18.      */
  19.     @Override
  20.     public void init() {
  21.         super.init();
  22.         try {
  23.             javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
  24.                 public void run() {
  25.                     initComponents();
  26.                 }
  27.             });
  28.         } catch (InterruptedException ex) {
  29.             System.err.println(ex.getMessage());
  30.         } catch (InvocationTargetException ex) {
  31.             ex.printStackTrace();
  32.         }
  33.     }
  34.  
  35.     /**
  36.      * Inicializa el componente.
  37.      */
  38.     private void initComponents() {
  39.         setBackground(java.awt.Color.WHITE);
  40.         setLayout(new java.awt.BorderLayout());
  41.         panel = new Panel();
  42.         add(panel);
  43.     }
  44.  
  45.     /**
  46.      * Aplicación principal.
  47.      * Inicializa el Frame.
  48.      * @param args los argumentos de la línea de comandos
  49.      */
  50.     public static void main(String[] args) {
  51.         javax.swing.SwingUtilities.invokeLater(new Runnable() {
  52.             public void run() {
  53.                 createAndShowGUI();
  54.             }
  55.         });
  56.     }
  57.  
  58.     /**
  59.      * Inicializa el componente.
  60.      */
  61.     private static void createAndShowGUI() {
  62.         javax.swing.JFrame frame = new javax.swing.JFrame();
  63.         frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  64.         frame.setTitle(".: JPuzzle :.");
  65.         frame.setResizable(true);
  66.         frame.pack();
  67.         frame.setSize(640, 480);
  68.         frame.setLocationRelativeTo(null);
  69.         frame.add(new Panel());
  70.         frame.setVisible(true);
  71.     }
  72. }

En este caso se usa un JPanel (Panel()) para contener TODA la aplicación, y se crea un JFrame por aparte, si se ejecuta como Applet entonces se inserta el Panel dentro del contenedor JApplet, si se ejecuta como Desktop se crea el JFrame y se inserta el Panel dentro del JFrame.

En tu caso podrías crear una nueva clase que extienda JApplet y crear el JFrame en el init() y en el main(). Cuando se ejecute como Applet (init()), el espacio del Applet en el browser va a quedar vacío, pero te va a mostrar el JFrame por aparte. Y cuando se ejecute como Desktop (main()) va a mostrar el JFrame.

Saludos,
  #16 (permalink)  
Antiguo 27/10/2009, 18:02
 
Fecha de Ingreso: febrero-2009
Mensajes: 29
Antigüedad: 15 años, 3 meses
Puntos: 1
Exclamación Respuesta: clase java que herede de applet

Hola de nuevo, elAntonie si que he mirado el bug, la URL que me pasaste, de hecho te contesté.

HackmanC , la clase no hereda de jframe y japplet al mismo tiempo, lo he intentando heredando de jframe y implementando runnable y tambien haciendo lo que comentas, de crear una entrada al programa por applet y que este sea el que llame despues a la clase que hereda de jframe, pero aun asi me ha tirado el error que al parecer es un bug, de todas formas mi clase applet esta eredando de Applet, no de Japplet asique probaré ese metodo y ya os cuento.

Muchas gracias a todos.

un saludo.

Cita:
Iniciado por HackmanC Ver Mensaje
Hola,

El problema es que tu Applet no puede extender JApplet y JFrame al mismo tiempo. Y si no usas JApplet no corre en el browser. Así que tienes que crear 2 puntos de entrada diferentes.

Código Java:
Ver original
  1. package JPuzzle;
  2.  
  3. import JPuzzle.Graphics.Panel;
  4. import java.lang.reflect.InvocationTargetException;
  5.  
  6. /**
  7.  * La aplicación principal del juego Puzzle.
  8.  * Funciona tanto como un Applet como una aplicación Desktop.
  9.  * @author HackmanGT
  10.  */
  11. public class Puzzle extends javax.swing.JApplet {
  12.  
  13.     private static Panel panel;
  14.  
  15.     /**
  16.      * Aplicación principal.
  17.      * Inicializa el Applet.
  18.      */
  19.     @Override
  20.     public void init() {
  21.         super.init();
  22.         try {
  23.             javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
  24.                 public void run() {
  25.                     initComponents();
  26.                 }
  27.             });
  28.         } catch (InterruptedException ex) {
  29.             System.err.println(ex.getMessage());
  30.         } catch (InvocationTargetException ex) {
  31.             ex.printStackTrace();
  32.         }
  33.     }
  34.  
  35.     /**
  36.      * Inicializa el componente.
  37.      */
  38.     private void initComponents() {
  39.         setBackground(java.awt.Color.WHITE);
  40.         setLayout(new java.awt.BorderLayout());
  41.         panel = new Panel();
  42.         add(panel);
  43.     }
  44.  
  45.     /**
  46.      * Aplicación principal.
  47.      * Inicializa el Frame.
  48.      * @param args los argumentos de la línea de comandos
  49.      */
  50.     public static void main(String[] args) {
  51.         javax.swing.SwingUtilities.invokeLater(new Runnable() {
  52.             public void run() {
  53.                 createAndShowGUI();
  54.             }
  55.         });
  56.     }
  57.  
  58.     /**
  59.      * Inicializa el componente.
  60.      */
  61.     private static void createAndShowGUI() {
  62.         javax.swing.JFrame frame = new javax.swing.JFrame();
  63.         frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  64.         frame.setTitle(".: JPuzzle :.");
  65.         frame.setResizable(true);
  66.         frame.pack();
  67.         frame.setSize(640, 480);
  68.         frame.setLocationRelativeTo(null);
  69.         frame.add(new Panel());
  70.         frame.setVisible(true);
  71.     }
  72. }

En este caso se usa un JPanel (Panel()) para contener TODA la aplicación, y se crea un JFrame por aparte, si se ejecuta como Applet entonces se inserta el Panel dentro del contenedor JApplet, si se ejecuta como Desktop se crea el JFrame y se inserta el Panel dentro del JFrame.

En tu caso podrías crear una nueva clase que extienda JApplet y crear el JFrame en el init() y en el main(). Cuando se ejecute como Applet (init()), el espacio del Applet en el browser va a quedar vacío, pero te va a mostrar el JFrame por aparte. Y cuando se ejecute como Desktop (main()) va a mostrar el JFrame.

Saludos,
  #17 (permalink)  
Antiguo 28/10/2009, 02:11
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: clase java que herede de applet

1º Asegúrate que está bien firmado.
2º ¿Tienes implementados los métodos init() y paint() en el applet? De no tenerlos igual no te va.
3º HackmanC te está dando una buena idea de como estructurar el código, míralo bien y a ver si puedes adaptar el tuyo.

Un saludo
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 01:34.