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

    Caricare secondo JPanel

    Salve, ho un JPanel1 in cui aggiungo un JPanel2 e fin qui tutto ok si visualizza tutto, quando clicco su un pulsante dovrebbe andare via il JPanel2 e mettere un JPanel3 solo che il JPanel2 si toglie o meglio non si vede come dovrebbe ma il JPanel3 non si visualizza.
    il bello che se aggiungo il JPanel3 al posto del 2 si vede!

    JP1-->JP2-->JP3 il due si vede il tre no

    JP1-->JP3-->JP2 il tre si vede il due no


    ora vi posto il codice di come rimuovo il JP2 e aggiungo il JP3
    codice:
    public void attivaPannelloCentrale(){
    		dispensa_0 disp_0=dispensa_0.getInstance();
    		dispensa_1 disp_1=dispensa_1.getInstance();
    		disp_0.setVisible(false);
    		panel.remove(disp_0);
    		disp_1.setVisible(true);
    		panel.add(disp_1);
    		frame.repaint();
    		frame.validate();
    		
    	
    		System.out.println("entra");
    		
    	}
    dove dispensa_0 e _1 sono delle classi che estendono JPanel.

    Grazie!

  2. #2
    niente??? io sto continuando a cercare, sono passato ad un approccio a cardlayout
    ma purtroppo la stessa identica cosa...

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Magari posta anche il codice relativo all'uso del CardLayout (che è la scelta corretta per il tipo di effetto che vuoi ottenere).

    Qui trovi il tutorial sull'uso del CardLayout.

    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
    ok qui ti posto tutto:
    codice:
    private CardLayout cards= new CardLayout();
    
    
    private void initialize() {
    		frame = new JFrame();
    		
    		frame.getContentPane().setBackground(Color.WHITE);
    		frame.setBackground(Color.WHITE);
    		frame.setBounds(100, 100, 1024, 768);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		
    		controllerHome controller = controllerHome.getInstance();
    		controller.setHomeVista(this);
    		
    		
    		
    		panel.setAlignmentY(Component.TOP_ALIGNMENT);
    		frame.getContentPane().add(panel, BorderLayout.CENTER);
    		
    		
    		panel.setLayout(cards);
    		
    		
    		
    		
    		JPanel_1.setLayout(new GridLayout(2, 2, 4, 4));
    		
    		JButton dispensa = new JButton("dispensa");
    	
    		dispensa.addActionListener(controller);
    		
    		panel_1.add(dispensa);   
    		
    		panel_1.add(btnNewButton_2);
    		
    		JButton btnNewButton_3 = new JButton("New button");
    		panel_1.add(btnNewButton_3);
    		JPanel panel_2 = new JPanel();
    		frame.getContentPane().add(panel_2, BorderLayout.NORTH);
    		
    		JLabel lblNewLabel = new JLabel("La dispensa di Sharon");
    		lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 24));
    		panel_2.add(lblNewLabel);
    		
    		panel.add(panel_1,"home");//aggiungo la carta
    		
    		frame.getContentPane().add(panel_3, BorderLayout.SOUTH);
    		
    		
    		
    		
    		
    		JLabel lblNewLabel_1 = new JLabel("New label");
    		lblNewLabel_1.setFont(new Font("Tahoma", Font.PLAIN, 24));
    		panel_3.add(lblNewLabel_1);
    		
    		
    		frame.getContentPane().add(panel_4, BorderLayout.WEST);
    		
    		JLabel lblNewLabel_2 = new JLabel("New label");
    		lblNewLabel_2.setFont(new Font("Tahoma", Font.PLAIN, 24));
    		panel_4.add(lblNewLabel_2);
    		JButton btnNewButton_1 = new JButton();
    		btnNewButton_1.setBorder(null);
    		
    	
    	    	    cards.first(panel);     
    		panel_1.add(btnNewButton_1);
    		btnNewButton_1.setAlignmentY(Component.TOP_ALIGNMENT);
    		btnNewButton_1.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    			}
    		});
    		
    	}
    poi c'è un controller che alla pressione di un tasto

    codice:
    public void attivaDispensa(){
    	
    				
    		dispensa_0 disp_0=dispensa_0.getInstance();// è un istanza di una classe che //estende jpanel ed utilizzo il singleton per averne un unica istanza
    		
    		panel.add(disp_0,"disp0");
    		
    		cards.show(panel, "disp0");
    	
    		
    		
    	}
    fin qui tutto ok quando alla pressione di un altro tasto (presente sul panel che ho inserito prima) parte questa funzione


    codice:
    public void attivaPannelloCentrale(){
    	
    		dispensa_1 disp_1=dispensa_1.getInstance();
    		
    		panel.add(disp_1,"disp1");
    		cards.show(panel, "disp1");
    		
    
    
    		
    	}

    e qui non fa niente

  5. #5
    perché prima chiami
    codice:
    JPanel_1.setLayout(new GridLayout(2, 2, 4, 4));
    e poi
    codice:
    panel_1.add(dispensa);
    inoltre non vedo dove hai istanziato la variabile JPanel_1, nonché panel_1....
    ed è veramente strano perché così ti dovrebbe dare un errore di NullPointerException
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  6. #6
    Ma soprattuto ti voglio fare i complementi per il coding style.
    In 20 righe di codice ai violato tutte Java Code Conventions che esistono, e non solo hai infranto anche diverse regole del ObjectOriented.
    Perchè creare un JPanel singleton......
    Giusto per sprecare un po di memoria direi....

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.