Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    313

    [java]Problema con eridarietà tra classi

    Ho la classe MainClass che un EXTENDS di JFrame,in cui voglio una
    barra menu ed un JDedktopPane in cui aprire delle finestre
    con dentro delle immagini.Adesso nella classe MainClass ho creato
    un istanza di JPanel in cui posizionare sia la barra che DesktopPane.
    nel MainCLass ho associato il desktop al pannello creando un istanza
    di JDesktop e lo visualizza ma sono andato a creare un istanza di
    MenuClass che è un EXTENDS di MainCLAss in cui viene creato la barra
    ma mi da un fatal errore,Come Fare??
    GRAZIE

    MAINCLASS:
    import javax.swing.*;
    import java.awt.*;


    public class MainClass extends JFrame{

    private MenuClass barra = new MenuClass();
    public JDesktopPane desktop = new JDesktopPane();
    private JPanel mainpanel = new JPanel(new BorderLayout());

    public MainClass() {
    super("Visualizzatore d'immagini");


    mainpanel.add(barra,BorderLayout.NORTH);
    mainpanel.add(desktop,BorderLayout.CENTER);
    this.getContentPane().add(mainpanel);



    }


    public static void main(String[] args) throws HeadlessException {
    try{
    UIManager.setLookAndFeel(UIManager.getSystemLookAn dFeelClassName());
    }
    catch(Exception e){
    }
    MainClass mainClass1 = new MainClass();
    mainClass1.setExtendedState(JFrame.MAXIMIZED_BOTH) ;
    mainClass1.setVisible(true);
    }


    }





    import javax.swing.*;
    import java.awt.event.*;
    import javax.media.jai.*;
    import java.awt.image.RenderedImage;
    import com.sun.media.jai.widget.DisplayJAI;

    import java.awt.*;

    public class MenuClass extends MainClass{

    private JMenuBar barra = new JMenuBar();
    private JMenu file = new JMenu("File");
    private JMenu effect = new JMenu("Effect");
    private JMenuItem esci = new JMenuItem("Esci");
    private JMenuItem salva = new JMenuItem("Salva");
    private JMenuItem salvaas = new JMenuItem("Salva con nome");
    private JMenuItem apri = new JMenuItem("Apri");
    private JMenuItem inverti = new JMenuItem("Inverti");
    private JMenuItem luminosita = new JMenuItem("Luminosità");
    private JMenuItem contrasto = new JMenuItem("Contrasto");

    public MenuClass() {


    barra.add(file);
    barra.add(effect);
    file.add(apri);
    file.add(salva);
    file.add(salvaas);
    file.add(esci);
    effect.add(inverti);
    effect.add(luminosita);
    effect.add(contrasto);


    apri.addActionListener(new ButtonApri());





    }

    public class ButtonApri implements ActionListener {

    public JInternalFrame finestra = new JInternalFrame();
    private JOptionPane pannello = new JOptionPane();
    private JFileChooser aprifile = new JFileChooser();
    private JScrollPane srcimgpanel = new JScrollPane(); //Panello Dell'immagine sorgente

    private DisplayJAI srcimg; //Pannello contenente L'immagine aperta
    public RenderedImage imgsrc;


    public void actionPerformed(ActionEvent e) {


    aprifile.setDialogTitle("Scegli Immagine");
    aprifile.showOpenDialog (pannello);
    /** Apertura dell'immagine **/
    String fileName = new String(aprifile.getSelectedFile().toString());
    imgsrc=JAI.create("fileload",fileName);
    /** Creazione del Panello contenete l'immagine aperta**/
    srcimg= new DisplayJAI(imgsrc);
    srcimg.setOrigin(0,0);
    srcimgpanel.getViewport().add(srcimg);
    finestra.getContentPane().add(srcimgpanel);
    finestra.setTitle("Immagine");

    desktop.add(finestra);
    finestra.setVisible(true);



    }
    }



    }

  2. #2
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    che eccezione lancia?

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    313
    L'eccezione che manda è questa:



    java.lang.StackOverflowError
    Exception in thread "main"

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    313
    Devo rivedere il programma oppure posso proseguire in un'altra maniera???

  5. #5
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    questo:

    codice:
    try{ 
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
    } 
    catch(Exception e){ 
    }
    proverei a metterlo in un blocco static così:

    codice:
    class nomeclasse extends JFrame {
    static {
    try{ 
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
    } 
    catch(Exception e){
    e.printStackTrace(); 
    } 
    }
    }
    prova se va.

    E se da errori posta tutto il testo delle eccezioni, inserendo nel blocco catch e.printStackTrace() appaiono info utili sulla console per il debug;


    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Dato che non viene lanciata una Eccezione, ma un Errore, io seguirei il consiglio di netarrow, ma intercettando un Error e non una Exception (che non si verifica):
    codice:
    try {
       ...
    } catch (Error e) { e.printStackTrace(); }
    Poi, prova a postare il codice inserendolo nei tag [*CODE][*/CODE] (senza l'asterisco), perchè è abbastanza lungo e non si riesce a leggere facilmente.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.