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

    [java]Ridimensionare un componente

    Quando ridimensiono JFrame con il mouse il disegno
    della finestra scompare, come posso fare a ridisignare
    automaticamente dopo aver ridimensionato la finestra??
    Ciao
    codice:
    public class Fonts extends JFrame{
        
        /** Creates a new instance of Fonts */
        public Fonts (){
            //imposta la barra del titolo e le dimensioni dellafinestra
            super("Using fonts");
            setSize(420, 125);
            setVisible(true);
            
            
        }
        
    //    visualizza strighe con diversi tipi di carattere e colori
        public void paint(Graphics g){
            //chiama il metodo paint della superclasse
            super.paint(g);
            
            //imposta il tipo di carattere a serif(Times), bold, 12pt
            g.setFont(new Font("serif", Font.BOLD, 12));
            g.drawString("Serif 12 point bold.",  20, 50);
            
            //imposta il tipo di carattere a monospaced(currier), italic, 12pt
            g.setFont(new Font("Monospaced", Font.ITALIC, 24));
            g.drawString("Monospaced 24 point italic.", 20, 70);
            
            //imposta il tipo di carattere a SansSerif(Helvetica), plain, 14pt
            g.setFont(new Font("SansSerif", Font.PLAIN, 14));
            g.drawString("SansSerif 14 point plain.",  20, 90);
            
            //imposta il tipo di carattere a serif(Times), bold/italic, 18pt
            g.setColor(Color.RED);
            g.setFont(new Font("Serif", Font.BOLD + Font.ITALIC, 18));
            g.drawString(g.getFont().getName() + " " + g.getFont().getSize() + " point bold italic.", 20, 110);
        }//fine metodo paint
        
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            Fonts application = new Fonts();
            
            application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        
    }
    Nulla, ma e' sempre qualcosa.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Prova a ridefinire il metodo paintComponents() al posto del metodo paint().

    In alternativa, puoi provare a chiamare un repaint() all'interno di paintComponent():
    codice:
    public void paintComponent(Graphics g) {
       repaint();
    }
    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

  3. #3
    Ma PaintComponent non e' la super classe per creare un area di
    disegno dedicata come ad esempio JPanel?
    ho fatto come mi hai detto, ho inserito la chiamata a paintComponent()(anziche' paint()) e alla fine del metodo paintComponent un repaint().
    L'immagine vibra tutta.
    Forse ho risolto...
    codice:
    public class Fonts extends JFrame{
        
        /** Creates a new instance of Fonts */
        public Fonts(){
            //imposta la barra del titolo e le dimensioni dellafinestra
            super("Using fonts");
            setSize(420, 125);
            setVisible(true);
            addComponentListener(new ComponentAdapter() {
                public void componentResized(java.awt.event.ComponentEvent e) {
                    repaint();
                }           
            });
            
            
        }
        
        //    visualizza strighe con diversi tipi di carattere e colori
        public void paint(Graphics g){
            //chiama il metodo paint della superclasse
            super.paint(g);
            
            //imposta il tipo di carattere a serif(Times), bold, 12pt
            g.setFont(new Font("serif", Font.BOLD, 12));
            g.drawString("Serif 12 point bold.",  20, 50);
            
            //imposta il tipo di carattere a monospaced(currier), italic, 12pt
            g.setFont(new Font("Monospaced", Font.ITALIC, 24));
            g.drawString("Monospaced 24 point italic.", 20, 70);
            
            //imposta il tipo di carattere a SansSerif(Helvetica), plain, 14pt
            g.setFont(new Font("SansSerif", Font.PLAIN, 14));
            g.drawString("SansSerif 14 point plain.",  20, 90);
            
            //imposta il tipo di carattere a serif(Times), bold/italic, 18pt
            g.setColor(Color.RED);
            g.setFont(new Font("Serif", Font.BOLD + Font.ITALIC, 18));
            g.drawString(g.getFont().getName() + " " + g.getFont().getSize() + " point bold italic.", 20, 110);
            
        }//fine metodo paint
        
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            Fonts application = new Fonts();
            
            application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        
    }
    Nulla, ma e' sempre qualcosa.

  4. #4
    Scusa ora ti spiego.
    Ho inserito nel listenerList un un listener per il componente
    che chiama repaint()
    codice:
    addComponentListener(new ComponentAdapter() {
                public void componentResized(java.awt.event.ComponentEvent e) {
                    repaint();
                }           
            });
    Nulla, ma e' sempre qualcosa.

  5. #5
    Questo problema mi ha afflitto per settimane e trovare la soluzione cosi semplice che mi viene voglia di sfondare il monitor!!
    Ciao
    Nulla, ma e' sempre qualcosa.

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.