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

    [java] setBackground strano comportamento

    Ciao a tutti, ho questo brevissimo codice:

    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class Elicopter extends JFrame{
        public Elicopter(){
            super("Gioco dell'elicottero");
            setBackground(new Color(255, 0, 0));
            setSize(600, 450);
            setVisible(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        public static void main(String[] args){
            Elicopter copper=new Elicopter();
        }
    }
    il fatto è che lo sfondo invece di rimanere rosso, diventa rosso per un attimo e poi torna al colore predefinito dove sbaglio???
    Grazie!!!
    Ci provo...e ci riesco!!!
    http://kings.altervista.org

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Sostituisci:

    setBackground(new Color(255, 0, 0));


    con:

    getContentPane().setBackground(new Color(255, 0, 0));


    Tieni presente che per la maggiorparte delle cose non devi lavorare direttamente con il JFrame, ma con il suo pannello del contenuto, il ContentPane appunto, che ottieni con getContentPane(). E' quindi sul Content Pane che devi invocare il metodo setBackground, ed i vari componenti che vuoi inserire nella finestra devi inserirli nel Content Pane (o in un altro pannello che a sua volta sarà messo nel content pane),


  3. #3
    Che stupido hai ragione!!!
    Colgo l'occasione per farti un'altra domanda:
    codice:
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class Elicopter extends JFrame{
        Rectangle rett;
        public Elicopter(){
            super("Gioco dell'elicottero");
            getContentPane().setBackground(new Color(0, 255, 0));
            getContentPane().setLayout(null);
            rett=new Rectangle();
            rett.setBounds(150, 200, 50, 50);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setSize(600, 450);
            setVisible(true);
        }
        public static void main(String[] args){
            Elicopter copper=new Elicopter();
        }
    }
    So che la risposta è una stupidaggine come la precedente, ma perché non viene disegnato il rettangolo???

    Grazie!!!
    Ci provo...e ci riesco!!!
    http://kings.altervista.org

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Perchè Rectangle non è un componente per disegnare rettangoli, serve solo a definire un'area. E' un componente che permette di definire posizioni, larghezze e altezze di altri componenti.

    Per tracciare un rettangolo su di un componente devi ridefinirne il metodo paint():
    codice:
    public void paint(Graphics g) {
       g.drawRect(posX, posY, larghezza, altezza);
    }
    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

  5. #5
    Il fatto è che devo vedere se un JLabel ed un rettangolo disegnato vengono a contatto.
    Comunque grazie dele vostre risposte!!!
    Ci provo...e ci riesco!!!
    http://kings.altervista.org

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Bhe dipende da dove fai il disegno e dove sistemi la JLabel...consiglio anche a te di darti una bella lettura ai tutorials della sun sulle classsi Swing...


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