Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Richiamare una classe esterna aiuto per favore

    Salve ragazzi,

    ho un problema. Ho preso una classe dal sito di java ufficiale, in pratica una che aveva dei button disposti in una grid.

    Ho modificato la classe a mie esigenze; la lancio e tutto funziona.

    Ora però avrei bisogno di integrarla con la mia applicazione.

    come posso fare per includerla nella mia applicazione il codice della classe è il seguente:

    codice:
    import java.awt.*;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    
    public class GridBagLayoutDemo {
        final static boolean shouldFill = true;
        final static boolean shouldWeightX = true;
        final static boolean RIGHT_TO_LEFT = false;
    
        public static void addComponentsToPane(Container pane) {
            if (RIGHT_TO_LEFT) {
                pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
            }
            JLabel labelCodiceLocalita;
            JTextField textCodiceLocalita ;
            JLabel labelOraPartenze;
            JTextField textOraPartenze;
            JLabel labelCodice1Nota;
            JTextField textCodice1Nota;
            JLabel labelCodice2Nota;
            JTextField textCodice2Nota;
            JLabel labelOraArrivoDa;
            JTextField textOraArrivoDa;
            JLabel labelOraPartenzaPer;
            JTextField textOraPartenzaPer;
            JLabel labelCodice1NotaBis;
            JTextField textCodice1NotaBis;
            JLabel labelCodice2NotaBis;
            JTextField textCodice2NotaBis;
            JLabel labelOraArrivoPer;
            JTextField textOraArrivoPer;
            
    	pane.setLayout(new GridBagLayout());
    	GridBagConstraints c = new GridBagConstraints();
    	if (shouldFill) {
    	//natural height, maximum width
    	c.fill = GridBagConstraints.HORIZONTAL;
    	}
    
    	labelCodiceLocalita = new JLabel("Codice Località: ");
    	if (shouldWeightX) {
    	c.weightx = 0.5;
    	}
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.gridx = 0;
    	c.gridy = 0;
    	pane.add(labelCodiceLocalita, c);
    	
    	
    	textCodiceLocalita = new JTextField();
    	if (shouldWeightX) {
    	c.weightx = 0.5;
    	}
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.gridx = 1;
    	c.gridy = 0;
    	pane.add(textCodiceLocalita, c);
    
    	labelOraPartenze = new JLabel("Ora Partenza: ");
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.ipady = 20;      //make this component tall
    	c.weightx = 0.0;
    	c.gridwidth = 3;
    	c.gridx = 0;
    	c.gridy = 1;
    	pane.add(labelOraPartenze, c);
    	
    	textOraPartenze = new JTextField();
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.ipady = 1;      //make this component tall
    	c.weightx = 0.0;
    	c.gridwidth = 3;
    	c.gridx = 1;
    	c.gridy = 1;
    	pane.add(textOraPartenze, c);
    	
    	labelCodice1Nota = new JLabel("Codice 1 nota");
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.ipady = 20;
    	c.weightx = 0.0;
    	c.gridwidth = 3;
    	c.gridx = 0;
    	c.gridy = 2;
    	pane.add(labelCodice1Nota, c);
    
    	textCodice1Nota = new JTextField();
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.ipady = 1;
    	c.weightx = 0.0;
    	c.gridwidth = 3;
    	c.gridx = 1;
    	c.gridy = 2;
    	pane.add(textCodice1Nota, c);
    
    	labelCodice2Nota = new JLabel("Codice 2 Nota: ");
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.ipady = 20;      //make this component tall
    	c.weightx = 0.0;
    	c.gridwidth = 3;
    	c.gridx = 0;
    	c.gridy = 3;
    	pane.add(labelCodice2Nota, c);
    
    	textCodice2Nota = new JTextField();
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.ipady = 1;      //make this component tall
    	c.weightx = 0.0;
    	c.gridwidth = 3;
    	c.gridx = 1;
    	c.gridy = 3;
    	pane.add(textCodice2Nota, c);
    	
    	labelOraArrivoDa = new JLabel("Ora arrivo da: ");
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.ipady = 20;      //make this component tall
    	c.weightx = 0.0;
    	c.gridwidth = 3;
    	c.gridx = 0;
    	c.gridy = 4;
    	pane.add(labelOraArrivoDa, c);
    
    	textOraArrivoDa = new JTextField();
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.ipady = 1;      //make this component tall
    	c.weightx = 0.0;
    	c.gridwidth = 3;
    	c.gridx = 1;
    	c.gridy = 4;
    	pane.add(textOraArrivoDa, c);
    	
    	labelOraPartenzaPer = new JLabel("Ora partenza per: ");
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.ipady = 20;      //make this component tall
    	c.weightx = 0.0;
    	c.gridwidth = 3;
    	c.gridx = 0;
    	c.gridy = 5;
    	pane.add(labelOraPartenzaPer, c);
    
    	textOraPartenzaPer = new JTextField();
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.ipady = 1;      //make this component tall
    	c.weightx = 0.0;
    	c.gridwidth = 3;
    	c.gridx = 1;
    	c.gridy = 5;
    	pane.add(textOraPartenzaPer, c);
    	
    	labelCodice1NotaBis = new JLabel("Codice 1° nota bis: ");
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.ipady = 20;      //make this component tall
    	c.weightx = 0.0;
    	c.gridwidth = 3;
    	c.gridx = 0;
    	c.gridy = 6;
    	pane.add(labelCodice1NotaBis, c);
    
    	textCodice1NotaBis = new JTextField();
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.ipady = 1;      //make this component tall
    	c.weightx = 0.0;
    	c.gridwidth = 3;
    	c.gridx = 1;
    	c.gridy = 6;
    	pane.add(textCodice1NotaBis, c);
    	
    	labelCodice2NotaBis = new JLabel("Codice 2° nota bis: ");
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.ipady = 20;      //make this component tall
    	c.weightx = 0.0;
    	c.gridwidth = 3;
    	c.gridx = 0;
    	c.gridy = 7;
    	pane.add(labelCodice2NotaBis, c);
    
    	textCodice2NotaBis = new JTextField();
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.ipady = 1;      //make this component tall
    	c.weightx = 0.0;
    	c.gridwidth = 3;
    	c.gridx = 1;
    	c.gridy = 7;
    	pane.add(textCodice2NotaBis, c);
    	labelOraArrivoPer = new JLabel("Ora Arrivo per: ");
    
    
    	c.gridx = 0;
    	c.gridy = 8;
    	pane.add(labelOraArrivoPer, c);
    
    	textOraArrivoPer = new JTextField();
    	c.fill = GridBagConstraints.HORIZONTAL;
    	c.ipady = 1;      //make this component tall
    	c.weightx = 0.0;
    	c.gridwidth = 3;
    	c.gridx = 1;
    	c.gridy = 8;
    	pane.add(textOraArrivoPer, c);
    	
        }
    
        /**
         * Create the GUI and show it.  For thread safety,
         * this method should be invoked from the
         * event-dispatching thread.
         */
        private static void createAndShowGUI() {
            //Create and set up the window.
            JFrame frame = new JFrame("GridBagLayoutDemo");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            //Set up the content pane.
            addComponentsToPane(frame.getContentPane());
    
            //Display the window.
            frame.pack();
            frame.setVisible(true);
        }
    
        public static void main(String[] args) {
            //Schedule a job for the event-dispatching thread:
            //creating and showing this application's GUI.
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }
            });
        }
    }

    nella mia classe invece ho fatto così

    nomeClasseJava demo = new nomeClasseJava();
    frame.add(demo);

    mi genera un errore in quanto dice che demo non è un componente.

    Ricordo che frame è un componente di tipo JFrame.

    Mi potete aiutare????

  2. #2
    nessuno mi sa aiutare????

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Quella classe, infatti, non è un componente: non estende proprio nulla che derivi da Component (estende implicitamente Object).

    Credo che tu non abbia ben chiaro i concetti della Programmazione Object Oriented, anche perchè non avrebbe alcun senso includere ciò che quella applicazione rappresenta (ovvero una finestra!!) all'interno di un componente qualsiasi...

    Quello che intendo dire è che quella applicazione (che, ripeto, NON è un componente, ma ne usa diversi) rappresenta una finestra... e le finestre sono componenti top-level, che quindi non possono essere "inclusi" in altri componenti tramite il metodo add()...

    Per poter riutilizzare quel codice all'interno di un'applicazione è ovvio che deve essere riscritto: gli esempi che trovi sul sito ufficiale di Java servono ad illustrare come vengono utilizzate particolari caratteristiche/classi... poi sta al programmatore adattare gli esempi al proprio codice, cosa che raramente si può fare con un semplice copia/incolla.


    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

  4. #4
    mi potresti fornire qualche esempio o qualche link in cui andarli a beccare?

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da bircastri
    mi potresti fornire qualche esempio o qualche link in cui andarli a beccare?
    Andare a beccare gli adattamenti che devi fare tu???


    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

  6. #6
    OOP questa sconosciuta.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    scusate ragazzi ma non vi capisco

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Dal tuo primo post deduco che tu l'abbia modificata, dopo averla presa, in modo da adattarla alle tue esigenze...

    Quindi sei in grado di apportare la stessa modifica alla tua applicazione in modo da integrare quella finestra. Quello che dovrai fare nella tua aplicazione è esattamente quello che hai fatto in questo metodo:

    codice:
        private static void createAndShowGUI() {
            //Create and set up the window.
            JFrame frame = new JFrame("GridBagLayoutDemo");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            //Set up the content pane.
            addComponentsToPane(frame.getContentPane());
    
            //Display the window.
            frame.pack();
            frame.setVisible(true);
        }
    Di più non ti so proprio cosa dire, non avendo alcuna idea di dove e come integrare la tua applizazione, di cui non si sa nulla.

    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

  9. #9
    allora ti spiego la mia applicazione all'avvio genera un componente JFrame, in cui è incluso un JPanel che visualizza una tabella che prende i dati da un database.

    A questo punto in un qualsiasi momento un utente cliccando su un apposita voce di menù, può accedere ad un altra area del programma. (In pratica deve accedere ad un'altra schermata in cui appariranno delle text, il programma presi i dati dalle text deve formulare una query ecc ecc)

    vi posto un pò di codice:


    //qui creo la finestra
    codice:
    frame = new JFrame("Pullman ver 1.0");
    		//frame.getPreferredSize();
    		frame.setSize(900, 480);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setJMenuBar(menuBar);
    		frame.pack();
            frame.setVisible(true);
    qui creo e inserisco la tabella nel form

    codice:
     JTable table = new JTable(v, vettore);
    	                    System.out.println("Sono qui");
    	                    jScrollPane1 = new javax.swing.JScrollPane();
    	                    System.out.println("Sono qui");
    	                    jScrollPane1.setName("jScrollPane1");
    	                    System.out.println("Sono qui");
    	                    jScrollPane1.setViewportView(table);
    	                    System.out.println("Sono qui");
    	                    
    	                    
    	                    deskTabellaPartenze = new JPanel();
    	                    frame.add(deskTabellaPartenze, BorderLayout.EAST);
    	                    deskTabellaPartenze.add(jScrollPane1, javax.swing.JLayeredPane.DEFAULT_LAYER);
    	                    System.out.println("Sono qui");
    	                    
    	                    
    	                    frame.pack();
    quando un utente vuole accedere a quella schermata(posto il codice di sotto)

    codice:
    menuItem = new JMenuItem("Inserisci nuova corsa",
    	                                 KeyEvent.VK_T);
    	        menuItem.addActionListener( new ActionListener() {
    	            public void actionPerformed( ActionEvent e ) {
    	            	ciclo = false;
    	                frame.getContentPane().remove(deskTabellaPartenze);
    	                GridBagLayoutDemo demo = new GridBagLayoutDemo();
    	                demo.createContentPane();
    	               // frame.setContentPane(demo.createContentPane());
                        frame.pack();
    	                
    	                
    	          
    	            }
    	        } );
    questo ultimo pezzo di codice da problemi, in pratica il mio errore è quello di non riuscire a far entrare quello che visualizza la classe GridBack.... postata all'inizio nella mia finestra.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.