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(); } }
Partager