Swing e repaint

di Anonimizzato6440 il
4 risposte
Salve a tutti,
Ho creato una piccola aaplicazione in java usando Swing.
Ho una classe che estende JPanel dentro un JFrame dove vado a disegnare alcuni cerchi, ma ho uno strano comportamento, i cerchi non appaiono se prima non tento di cambiare dimensione alla finestra!!!!
Ho provato a fare il repaint, ma non va!!!!

4 Risposte

  • Scusate, ho risolto!
    bastava chiamare
    <MiaClasseCheEstendeJPanel>.setBounds(0, 0, getSize().width, getSize().height); 
    prima di
    <MiaClasseCheEstendeJPanel>.setVisible(true); 
  • Scusate, non ho risolto!!!!

    Mi ritrovo uno strano comportamento!
    Sto scrivendo una semplice applicazione, come si vede dalla figura ho un JFrame con dentro due JPanel, ma quando avvio l'applicazione un JPanel appare per qualche millisecondo e poi scompare, mentre l'altro rimane!!!



    questo è il codice
    
    	private void setDrawingZone(){
    		
    		drawingZone = new DrawingZone();
    		drawingZone.setSize( ••• );
    		drawingZone.setBounds( ••• );
    		drawingZone.setVisible(true);
    		drawingZone.repaint();
    		
    		areaBox = new JPanel();
    		areaBox.setSize( ••• );
    		areaBox.setBounds( ••• );
    		areaBox.setVisible(true);
    		areaBox.add(drawingZone);
    
    		getContentPane().add( areaBox );
    		areaBox.paintImmediately( ••• );
    		
    		panelLog = new JPanel();
    		panelLog.setSize( ••• );
    		panelLog.setBounds( ••• );
    		panelLog.setVisible(true);
    		
    		log = new JTextArea(  );
    		log.setEditable(false);
    		log.setLineWrap(true);
    		log.setSize( ••• );
    		log.setVisible(true);
    		
    		panelLog.add(log);
    		
    		getContentPane().add(BorderLayout.EAST, panelLog);
    	}
    	
    	
    	private void showLog( String info ){
    		log.setText(info);
    		getContentPane().repaint();
    	}
    
    Non capisco cosa faccia scomparire il primo JPanel!!
  • Il problema stava nel layout, bastava settare a null il lauoyt del JPanel che scompariva!
    areaBox.setLayout(null);
Devi accedere o registrarti per scrivere nel forum
4 risposte