Buongiorno a tutti,
è un po' che non scrivo più in questo forum ma ho un problema che forse vuoi potete aiutare a risolvere. Sulla rete sto cercando disperatamente un esempio di DND (Drag&Drop) ma gli esempi che trovo non fanno a caso mio.
Il programma dovrebbe far visualizzare 3 icone, due delle quali sono uguali.codice:package twi609.applet1; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Applet1 extends JApplet { private ImageIcon icon, icon2; private JLabel label1; private JLabel label2; private JLabel label3; private GridLayout gridLayout; private JPanel panel; private JButton prescrivi; @Override public void init () { //super ("Gestione Unità di Degenza"); this.setSize (900, 600); try { icon = new ImageIcon ("C:\\blank.gif"); icon2 = new ImageIcon("C:\\node.jpg"); } catch (Exception e) { System.out.println (e); } gridLayout = new GridLayout(6,2); label1 = new JLabel ("Letto n°1", icon, SwingConstants.CENTER); label2 = new JLabel ("Letto n°2", icon2, SwingConstants.CENTER); label3 = new JLabel ("Letto n°3", icon2, SwingConstants.CENTER); label1.setTransferHandler (new TransferHandler("icon")); label2.setTransferHandler (new TransferHandler ("icon")); label3.setTransferHandler (new TransferHandler ("icon")); MouseListener listener = new MouseListener() { @Override public void mousePressed(MouseEvent me) { System.out.println("Mouse Pressed"); JLabel comp = (JLabel) me.getSource(); TransferHandler handler = comp.getTransferHandler(); handler.exportAsDrag(comp, me, TransferHandler.MOVE); } @Override public void mouseReleased(MouseEvent me) { System.out.println("Mouse Released"); } @Override public void mouseEntered(MouseEvent me) { //System.out.println("Mouse Entered"); } @Override public void mouseExited(MouseEvent me) { //System.out.println("Mouse Exited"); } @Override public void mouseClicked(MouseEvent me) { System.out.println("Mouse Clicked"); } }; label1.addMouseListener(listener); label2.addMouseListener(listener); label3.addMouseListener(listener); getContentPane ().add (label1, BorderLayout.NORTH); getContentPane ().add (label2, BorderLayout.SOUTH); getContentPane ().add (label3, BorderLayout.SOUTH); prescrivi = new JButton("Prescrivi"); panel = new JPanel(); panel.setBounds(0,0,300,200);//setto le dimensioni del pannello dentro la applet panel.setLayout(gridLayout); panel.setBackground(Color.gray);//setto il colore di sfondo del pannello //aggiungo al pannello il pulsate di log in e invio messaggio panel.add( this.addLoginButton(10,10,10,10,"login all'application") ); panel.add(this.label1); panel.add(this.label2); panel.add(this.label3); this.setContentPane(this.panel);//aggiungo alla applet il pannello } JButton addLoginButton(int x,int y,int height,int width, String label) { prescrivi = new JButton(label); prescrivi.setBounds(x,y,width,height); prescrivi.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onLoginButtonClick(e); } } ); //buttonSendMessage.setVisible(false); return prescrivi; } /**instaura la connessione tra applet e application */ private void onLoginButtonClick(ActionEvent e) { if(e.getSource() == prescrivi) { System.out.println("Evento"); } } }
Quando sposto una icona su un'altra JLabel quest'ultima dovrebbe spostarsi. Non è così purtroppo, il programma ignora tutto questo.
Se però cambio il codice scrivendo "TransferHandler.COPY" anzichè "TransferHandler.MOVE" l'icona viene effettivamente compiata.
Ora questo "pezzo" di comportamento può anche andarmi bene ma l'icona di partenza deve cambiare. Dovrei vedere una specie di spostamento dell'immagine ma così non è...
Qualcuno può aiutarmi perfavore?
Grazie in anticipo a tutti.

Rispondi quotando
