Newsgroup: it.comp.java
Titolo: Internal Frame

salve a tutti,
ho cominciato da poco a programmare in Java e dopo essermi documentato sto
cercando di fare un'applicazione usando GUI per la manipolazione di Database
tramite il JDBC.
Ho letto che c'è la possibilità di usare per le interfacce grafiche i
cosiddetti Internal Frame(finestre che rimangono confinate all'interno del
pannello principale dell'applicazione). Sto usando jBuilder e non riesco a
trovare il modo di usarle... come posso fare? non ho trovato testi o siti
che ne parlano in modo specifico...
potreste darmi una mano?
Grazie anticipatamente per le Vs risposte!
....enzo

che ne parlano in modo specifico...
Il Tutorial non ti basta?
http://java.sun.com/docs/books/tutorial/uiswing/components/internalframe.ht
ml
-- 
Ciao
	Fabrizio C.

 ha scritto nel messaggio
news:MPG.189e05edd...@powernews.libero.it...


vorrei venirne a capo!!!
Allora descrivi con più dettagli e magari manda un po' di codice.
-- 
Ciao
	Fabrizio C.

Ho un db che mi gestisce l'iscrizione agli esami di 7 corsi. Ogni corso ha
una sua tabella all'interno del db.
devo gestire l'iscrizione, la cancellazione, la stampa e la visualizzazione
della lista di iscritti e delle date degli esami a video.
Ho una GUI iniziale con un JmenuBar
action | visualizzazione | Help |
 sotto action ho: iscrizione, cancellazione e Exit....
in GestioneEsamiFrame.java gestisco la GUI e gli eventi del jmenuBar
quando voglio iscrivermi ( tramite il metodo dell'evento iscrizione) chiamo
la mia finestra di dialogo:
IscrizioneBox dlg  =  new IscrizioneBox(this);
....
tale finestra la gestisco in IscrizioneBox.java.....
ora la mia JDesktopPane da come ho capito deve essere la GUI principale che
ho in GestioneEsamiFrame.java
e il mio Internal Frame la finestra che ho in IscrizioneBox.java!
ora come finestra di dialogo semplice la riesco a gestire ma non riesco a
renderla internal Frame1
Ok non sono molto pratico dei vari termini... ma spero di essermi spiegato!
Ho fatto un .java per ogni finestra di dialogo (clearBox.java, ViewBox.java,
AboutBox.java, HelpBox.java....) perchč mi da l'idea che sia piů ordinato e
+ semplice da gestire in caso di modifica!
grazie tante!

+ semplice da gestire in caso di modifica!
Mi domando se ti sei guardato il Tutorial (almeno) qui
http://java.sun.com/docs/books/tutorial/uiswing/components/internalframe.ht
ml
Se vuoi vedere altri esempi, guarda il demo SwingSet2 nella cartella demo 
del tuo jdk (c'è anche il sorgente).
-- 
Ciao
	Fabrizio C.

 Fabrizio C.
Ti ringrazio tanto Fabrizio.... ti farò sapere come va!!!
Grazie... Enzo R.

ecco come sto gestendo per ora le finestre di dialogo....
in GestioneEsamiFrame.java ho per la scelta iscrizione:
//Menů ACTION gestione ISCRIZIONE action performed
   public void jMenuIscrizione_actionPerformed(ActionEvent e) {
     IscrizioneFrame_IscrizioneBox dlg = new
IscrizioneFrame_IscrizioneBox(this);
    // per il dimensionamento e la posizione centrale della finestra di
dialogo
    Dimension dlgSize = dlg.getPreferredSize();
     Dimension frmSize = getSize();
     Point loc = getLocation();
     dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x,
(frmSize.height - dlgSize.height) / 2 + loc.y);
     dlg.setModal(true);
     dlg.pack();
     dlg.show();
  }
in IscrizioneFrame_IscrizioneBox.java
public class IscrizioneFrame_IscrizioneBox extends JDialog implements
ActionListener {
.......
//gestisco i dati e la ActionListener del pulsante "Iscrizione" richiamando
la Gestione de DB
   //Gestione del JBottonIscrizione con l'invio al DB delle informazioni
necessarie
  //all'iscrizione... connessione al DB, Composizione e esecuzione del
Comando SQL
 public void actionPerformed(ActionEvent e) {
    if (e.getSource() == jButtonIscrizione) {
        int mtr = Integer.parseInt(jTextMatricola.getText());
       String es = cmbEsami.getSelectedItem();
       String nm = jTextNome.getText();
       String cgn = jTextCognome.getText();
       String mail = jTextMail.getText();
       String act = "ISCRIZIONE";
            new GestioneDB(act,es,mtr,cgn,nm,mail);
       //chiudo finestra
       cancel();
    }
  }

java... sarebbe meglio fare cosa?
Un po' è anche questioni di gusti (se non si vogliono fare studi 
approfonditi di usabilità ed ergonomia).
Provo a dirti la mia.
Niente finestre di dialogo (che riserverei per errori o simili) svolazzanti 
né internal frame.
Siccome un'immagine... ecc. ecc., invece di dirtelo a parole, posto un po' 
di codice.
ATTENZIONE: è pessimo codice, giusto uno spike per permettere di vedere dal 
vivo il tipo (la "forma") dell'interfaccia. Non accetto recriminiazioni ;-)
Inoltre è ovviamente un guscio vuoto (e ampiamente incompleto): dovresti 
implementare anche tutto il comportamento.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class SnakeMain extends JFrame {
    public SnakeMain() {
        super("Snake74");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setContentPane(buildGUI());
        setJMenuBar(buildMenuBar());
    }
    private JMenuBar buildMenuBar() {
        JMenuBar mb = new JMenuBar();
        JMenu help = new JMenu("Help");
        help.setMnemonic(KeyEvent.VK_H);
        JMenuItem about = new JMenuItem("Informazioni su...", 
                                        KeyEvent.VK_I);
        help.add(about);
        mb.add(help);
        return mb;
    }
    private JComponent buildGUI() {
        JPanel p = new JPanel(new BorderLayout());
        p.add(buildTablePanel(), BorderLayout.CENTER);
        p.add(buildDetailPanel(), BorderLayout.SOUTH);
        JSplitPane sp2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, 
                                        buildNavigator(), p);
        return sp2;
    }
    private JComponent buildDetailPanel() {
        JPanel p = new JPanel(new BorderLayout());
        p.add(buildButtonPanel(), BorderLayout.NORTH);
        p.add(buildEditPanel(), BorderLayout.CENTER);
        Border tb = BorderFactory.createTitledBorder(
                            "Pannello di editing");
        Border eb = BorderFactory.createEmptyBorder(5, 5, 5, 5);
        p.setBorder(BorderFactory.createCompoundBorder(eb, tb));
        return p;
    }
    private JComponent buildEditPanel() {
        JPanel p = new JPanel(new GridLayout(3, 2));
        p.add(new JLabel("Matricola", JLabel.RIGHT));
        p.add(new JTextField());
        p.add(new JLabel("Cognome", JLabel.RIGHT));
        p.add(new JTextField());
        p.add(new JLabel("Nome", JLabel.RIGHT));
        p.add(new JTextField());
        p.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        return p;
    }
    private JComponent buildButtonPanel() {
        JPanel p = new JPanel(new GridLayout(1, 3));
        p.add(new JButton("Inserisci"));
        p.add(new JButton("Aggiorna"));
        p.add(new JButton("Cancella"));
        p.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        return p;
    }
    private JComponent buildTablePanel() {
        Object[] colNames = new Object[] {
            "Matricola", "Nome", "Cognome"
        };
        Object[][] data = new Object[][] 
        {
            {"007", "James", "Bond"}, 
            {"008", "Enzo", "R."}
        };
        JTable t = new JTable(data, colNames);
        return new JScrollPane(t);
    }
    private JComponent buildNavigator() {
        JList c = new JList(new Object[] {"Cippa", "Lippa"});
        c.setSelectedIndex(1);
        JLabel l = new JLabel("Seleziona il nome del corso:");
        l.setLabelFor(c);
        JPanel p = new JPanel(new BorderLayout());
        p.add(l, BorderLayout.NORTH);
        p.add(new JScrollPane(c), BorderLayout.CENTER);
        p.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 5));
        return p;
    }
    public static void main(String[] args) {
        JFrame frame = new SnakeMain();
        frame.pack();
        frame.setVisible(true);
    }
}
-- 
Ciao
	Fabrizio C.