IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

JPanel avec Fond et D&D


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 28
    Par défaut JPanel avec Fond et D&D
    Bonsoir à tous !

    Voilà, j'ai donc 2 fenêtres distinctes dont une contient une liste et l'autre un JPanel entre autre. Ce JPanel doit avoir un fond, et la liste sert à drag&drop des images sur le JPanel, mais malheureusement ces 2 caractéristiques semblent incompatible, ci-joint mon code.

    Quand je commente la fonction paint du JPanel le drag&drop fonctionne, mais sinon les images ne s'affichent pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
     
    import javax.swing.*;
    import java.awt.dnd.*;
    import java.awt.*;
    import java.awt.datatransfer.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import java.awt.Container;
    import java.awt.event.*;
     
    public class PanelSynoptique extends JFrame
    {
     
    	/*
    	 * Variables Globales
    	 */
    	final private JPanel jPanel1;
    	private JCheckBoxMenuItem jCheckBoxMenuItem1;
        private JCheckBoxMenuItem jCheckBoxMenuItem2;
        private JCheckBoxMenuItem jCheckBoxMenuItem3;
        private JMenu jMenu1;
        private JMenu jMenu2;
        private JMenuBar jMenuBar1;
        private JMenuItem jMenuItem1;
     
    	private Dimension tailleEcran = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    	private int hauteur_fenetre = (int)tailleEcran.getHeight();
    	private int largeur_fenetre = (int)tailleEcran.getWidth();
    	private Image icone_fenetre = Toolkit.getDefaultToolkit().getImage("./test.jpg");
     
    	private Toolkit toolkit = Toolkit.getDefaultToolkit(); 
    	private GraphicsConfiguration gconf = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
    	private Insets marges = toolkit.getScreenInsets(gconf);
     
        // Composants de la fenêtre
        protected Button Quitter   = new Button("Sortir");
        protected TextField TF     = new TextField("172.16.16.",16); 
        protected Button Connecter = new Button("Connecter");
        protected Panel P          = new Panel(); // panneau pour quelques composants
     
    	// Fin 
        class ActionQuitter extends WindowAdapter implements ActionListener
    	{
    		private void fin()
    		{
    		    System.exit(0);
    		}
     
    		public void actionPerformed(ActionEvent e)
    		{
    			fin();
    		}
     
    		public void windowClosing(WindowEvent e)
    		{
    			fin();
    		}
     
    		public void windowOpened (WindowEvent e) {}
    	}
     
    	// Action à réaliser pour le bouton 'connecter'
    	class ActionConnecter implements ActionListener
    	{
    		public void actionPerformed(ActionEvent e)
    		{
    			// 1. Lecture du texte de TF
    			String ip = TF.getText();
    		}
    	}
     
        public PanelSynoptique()
    	{
     
     
    		super("Synoptique - Maison Communicante");
    		setLocation(0,80);
    		setIconImage(icone_fenetre);
     
    		addWindowListener(new ActionQuitter()); // la petite croix !
    		Quitter.addActionListener(new ActionQuitter());
    		Connecter.addActionListener(new ActionConnecter());
     
    		/**** Menu Bar ****/
    		jMenuBar1 = new javax.swing.JMenuBar();
            jMenu1 = new javax.swing.JMenu();
            jMenuItem1 = new javax.swing.JMenuItem();
            jMenu2 = new javax.swing.JMenu();
            jCheckBoxMenuItem1 = new javax.swing.JCheckBoxMenuItem();
            jCheckBoxMenuItem2 = new javax.swing.JCheckBoxMenuItem();
            jCheckBoxMenuItem3 = new javax.swing.JCheckBoxMenuItem();
     
    		jMenu1.setText("Fichier");
     
            jMenuItem1.setText("Quitter");
            jMenu1.add(jMenuItem1);
     
            jMenuBar1.add(jMenu1);
     
            jMenu2.setText("Mode");
     
            jCheckBoxMenuItem1.setSelected(true);
            jCheckBoxMenuItem1.setText("Mode Surveillance");
            jMenu2.add(jCheckBoxMenuItem1);
     
            jCheckBoxMenuItem2.setSelected(false);
            jCheckBoxMenuItem2.setText("Mode Edition");
            jMenu2.add(jCheckBoxMenuItem2);
     
            jCheckBoxMenuItem3.setSelected(false);
            jCheckBoxMenuItem3.setText("Mode Simulation de présence");
            jMenu2.add(jCheckBoxMenuItem3);
     
            jMenuBar1.add(jMenu2);
     
            setJMenuBar(jMenuBar1);
    		/******************/
     
    		// Ajout des composants:
    		setLayout(new BorderLayout()); 
    		P.setLayout(new FlowLayout()); 
    		P.add(TF);
    		P.add(Connecter);
    		P.add(Quitter);
    		add(P, "South");
     
    		Container Conteneur = getContentPane();
    		jPanel1 = new JPanel(new FlowLayout())
    		{
    			public void paint(Graphics g)
    			{
    				try
    				{
    					BufferedImage image = ImageIO.read(new File("plan.jpg"));
    					g.drawImage(image, 0, 0, this.getWidth(),(this.getHeight()), null);
    				}
    				catch (IOException e)
    				{
    					e.printStackTrace();
    				}
    			}
    		};
     
    		jPanel1.setDropTarget(new DropTarget()
    		{
    			public void drop(DropTargetDropEvent dtde) 
    			{
    				try{
    					String img = (String)dtde.getTransferable().getTransferData(DataFlavor.stringFlavor);
    					jPanel1.add(new JLabel(new ImageIcon(img)));
    					jPanel1.revalidate();
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
     
    		Conteneur.add(jPanel1);
     
    		pack();
    		setVisible(true);
        }
     
        public static void main(String args[])
    	{
    		PanelSynoptique s = new PanelSynoptique();
        }
    }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 28
    Par défaut
    Personne n'a d'idées ?

  3. #3
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,

    redéfinit paintComponent plutôt que paint.

    la méthode paint fait appel au fait à 3 méthodes : paintComponent, paintBorder, et paintChildren, et donc quand tu redéfinit paint, tu dessines seulement ton image, et il n'y aura pas d'appel à paintChildren, et donc rien d'autre ne s'affichera à part ton image

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 28
    Par défaut
    Merci Ô grand Herch :ola: ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JPanel avec image de fond et composants au dessus
    Par sylverspoon dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 08/02/2010, 11h58
  2. Interchanger un JPanel avec un autre
    Par jfz dans le forum Agents de placement/Fenêtres
    Réponses: 10
    Dernier message: 09/01/2010, 20h38
  3. image de fond dans un JPanel avec Jlabel
    Par dawaman dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 13/11/2009, 22h42
  4. [Swing] JPanel avec sa JScrollBar qui scrolle toute seule
    Par chcoust dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 22/11/2006, 14h37
  5. Image avec fond transparent
    Par Virgile59 dans le forum Access
    Réponses: 3
    Dernier message: 16/09/2005, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo