Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655

    Diversi Panel contenuti nello stesso spazio di un JFrame

    Ciao, vorrei sapere se è possibile contenere nello stesso spazio di un JFrame diversi pannelli e a seconda del bottone cliccato sul Menubar si visualizzi e se ne attivi uno in particolare.

    ho provato ad utilizzare i metodi: setVisible()e setEnabled() nelle funzione che gestiscono gli eventi associati ai pulsanti del MenuBar,ma niente non riesco ad abilitarne uno e disabilitarne un altro.

    Cosa c'è che non và?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Puoi usare un TabbedPane, oppure puoi usare un LayeredPane, oppure nei metodi che gestiscono gli eventi dei bottoni, rimuovi il precedente pannello, inserisci il nuovo e fai repaint().

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    ho fatto come tu mi suggerisci, ovvero prima un remove(Pann)e poi un repaint() poi un add(altroPann) e di nuovo repaint() ma non mi visualizza altroPann,riesco soltanto a rimuovere quello vecchiio.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    allora io ho dichiarato il panel ma non posso aggiungerlo al jframe dinamicamente. Riporto un pò di codice

    codice:
    			{
    				mainDesktopPanel = new JDesktopPane();
    				
    				mainDesktopPanel.setBackground(new java.awt.Color(0, 128, 255));
    				mainDesktopPanel.setDoubleBuffered(true);
    				mainDesktopPanel.setVisible(true);
    				mainDesktopPanel.setEnabled(true);
    				mainDesktopPanel.setAutoscrolls(true);
    				{
    					titolo = new JLabel();
    					mainDesktopPanel.add(titolo);
    					titolo.setText("\"Conto Corrente Bancario\"");
    					titolo.setBounds(84, 7, 672, 63);
    					titolo
    						.setFont(new java.awt.Font("Monotype Corsiva", 2, 72));
    					titolo.setBackground(new java.awt.Color(255, 0, 0));
    				}
    				{
    					corsoLaurea = new JLabel();
    					mainDesktopPanel.add(corsoLaurea);
    					corsoLaurea
    						.setText("Informatica e Tecnologie per la Produzione del Software");
    					corsoLaurea.setBounds(91, 77, 672, 35);
    					corsoLaurea.setFont(new java.awt.Font("Verdana", 0, 24));
    					corsoLaurea.setBackground(new java.awt.Color(64, 0, 128));
    				}
    				{
    					logoUni = new JLabel();
    					mainDesktopPanel.add(logoUni);
    					logoUni.setIcon(new ImageIcon(getClass().getClassLoader()
    						.getResource("stemma.jpg")));
    					logoUni.setBounds(336, 126, 175, 168);
    				}
    				{
    					autore = new JLabel();
    					mainDesktopPanel.add(autore);
    					autore.setText("Autore:");
    					autore.setBounds(7, 364, 133, 28);
    					autore.setFont(new java.awt.Font("Arial", 0, 20));
    				}
    				{
    					nome = new JLabel();
    					mainDesktopPanel.add(nome);
    					nome.setText("Marcello Melcarne 455689");
    					nome.setBounds(77, 364, 308, 28);
    					nome.setFont(new java.awt.Font("Arial", 0, 20));
    				}
    			}
    			{
    				MenuBar = new JMenuBar();
    				setJMenuBar(MenuBar);
    				MenuBar.setPreferredSize(new java.awt.Dimension(689, 36));
    				MenuBar.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
    				{
    					databaseButton = new JButton();
    					FlowLayout databaseButtonLayout = new FlowLayout();
    					MenuBar.add(databaseButton);
    					databaseButton.setLayout(databaseButtonLayout);
    					databaseButton.setText("Conn.Database");
    					databaseButton.setIcon(new ImageIcon(getClass().getClassLoader().getResource("icon_sql_32px.gif")));
    					databaseButton.setToolTipText("Apri la connessione con il Database");
    					databaseButton.setBorder(BorderFactory.createTitledBorder(""));
    					databaseButton.setSize(176, 36);
    					databaseButton.setPreferredSize(new java.awt.Dimension(229, 36));
    					databaseButton.setBackground(new java.awt.Color(192,192,192));
    					databaseButton.addMouseListener(new MouseAdapter() {
    						public void mousePressed(MouseEvent evt) {
    							databaseButtonMousePressed(evt);
    						}
    					});
    				}
    ///MENUBAR
    
    			{
    				MenuBar = new JMenuBar();
    				setJMenuBar(MenuBar);
    				MenuBar.setPreferredSize(new java.awt.Dimension(689, 36));
    				MenuBar.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
    				{
    					databaseButton = new JButton();
    					FlowLayout databaseButtonLayout = new FlowLayout();
    					MenuBar.add(databaseButton);
    					databaseButton.setLayout(databaseButtonLayout);
    					databaseButton.setText("Conn.Database");
    					databaseButton.setIcon(new ImageIcon(getClass().getClassLoader().getResource("icon_sql_32px.gif")));
    					databaseButton.setToolTipText("Apri la connessione con il Database");
    					databaseButton.setBorder(BorderFactory.createTitledBorder(""));
    					databaseButton.setSize(176, 36);
    					databaseButton.setPreferredSize(new java.awt.Dimension(229, 36));
    					databaseButton.setBackground(new java.awt.Color(192,192,192));
    					databaseButton.addMouseListener(new MouseAdapter() {
    						public void mousePressed(MouseEvent evt) {
    							databaseButtonMousePressed(evt);
    						}
    					});
    				}
    				{
    					creaConto = new JMenu();
    					MenuBar.add(creaConto);
    					creaConto.setText("Apri Conto");
    					creaConto.setBorder(BorderFactory.createTitledBorder(""));
    					creaConto.setSize(150, 36);
    					creaConto.setPreferredSize(new java.awt.Dimension(189, 35));
    					creaConto.add(new JMenuItem ("Conto con Fido"));
    				}
    				{
    					operazioniConto = new JMenu();
    					MenuBar.add(operazioniConto);
    					operazioniConto.setText("Operazioni");
    					operazioniConto.setToolTipText("Seleziona la operazione da effettuare sul Conto");
    					operazioniConto.setBorder(BorderFactory.createTitledBorder(""));
    					operazioniConto.setSize(150, 36);
    					operazioniConto.setPreferredSize(new java.awt.Dimension(189, 35));
    					operazioniConto.add(new JMenuItem ("Accredita"));
    					operazioniConto.add(new JMenuItem ("Preleva"));
    					operazioniConto.add(new JMenuItem ("Imposta Fido"));
    					operazioniConto.add(new JMenuItem ("Chiudi Conto"));
    				}
    				{
    					visualizzaMenu = new JMenu();
    					MenuBar.add(visualizzaMenu);
    					visualizzaMenu.setText("Visualizza");
    					visualizzaMenu.setBorder(BorderFactory.createTitledBorder(""));
    					visualizzaMenu.setSize(150, 36);
    					visualizzaMenu.setPreferredSize(new java.awt.Dimension(196, 35));
    					visualizzaMenu.add(new JMenuItem ("Conto"));
    					visualizzaMenu.add(new JMenuItem ("Lista Conti"));
    					visualizzaMenu.add(new JMenuItem ("Percentuale Conti con Fido"));
    					visualizzaMenu.add(new JMenuItem ("Transazioni Conto"));
    				}
    				{
    					salva_carica = new JMenu();
    					MenuBar.add(salva_carica);
    					salva_carica.setText("Salva/Carica");
    					salva_carica.setBorder(BorderFactory.createTitledBorder(""));
    					salva_carica.setSize(150, 36);
    					salva_carica.setPreferredSize(new java.awt.Dimension(245, 35));
    					//si attiva quando si effettua la connessione al Database
    					salva_carica.setEnabled(false);
    					salva_carica.add(new JMenuItem ("Salva"));
    					salva_carica.add(new JMenuItem ("Carica"));
    				}
    			}
    
    private void databaseButtonMousePressed(MouseEvent evt) {
    getContentPane().add(mainDesktopPanel, BorderLayout.CENTER);
    		this.repaint();
    	}
    non sò a cosa sia dovuto.ho paura che un Panel non si possa aggiungere dinamicamente.il metodo definito alla fine è quello che quando richiamato dovrebbe aggiungermi il panel al JFrame,ma non lo fà!!! Dove sbaglio?

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    quando togli o modofici Component di un Container, devi validare il Container invocandoci sopra .validate() altrimenti non è assolutamente detto che la JVM ti aggiorni la grafica dell'applicazione, anche se ha disposto i nuovi elementi nel posto corretto.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    Grazie mille!!!! Non ero a conoscenza del metodo validate()!! Mi è bastato scrivere

    codice:
    		getContentPane().remove(mainDesktopPanel);
    		getContentPane().add(desktopPanelDatabase, BorderLayout.CENTER);
    		this.repaint();
    		getContentPane().validate();
    e funziona alla perfezione!!

    Era proprio coò che volevo,grazie ancora!! Ciaoooo!!!!

  7. #7
    Io ho lo stesso problema... ho un JFrame che contiene 2 JPanel uno per i bottoni e uno con una sola immagine di sfondo. Ho inizialmente istanziato il JFrame e ci ho aggiunto i 2 pannelli (li ho chiamati "bottoni" e "contenuto"). quindi ora voglio che quando clicco un bottone dal rispettivo pannello compaia una JList nel pannello contenuto.
    Quindi nell'action performed del pannello "bottoni" ho inserito una chiamata ad un metodo che ho definito nel pannello "contenuto". Questo metodo dovrebbe solo far comparire la Jlist.. ho provato con tutte le soluzioni che avete postato ma non ne funziona una...getContentPane dentro al pannello mi da errore...ho provato a passare alla classe "contenuto" (il pannello dove dovrebbe comparire quella stronza di JList) l'oggetto Frame (che e' effettivamente il contenitore) ed a fare frame.add(JList) frame.validate() ma nisba...sto' bestemmiando come un eretico...vi prego di rispondermi
    Grazie infinite

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.