Path: csiph.com!news.redatomik.org!news.muarf.org!nntpfeed.proxad.net!proxad.net!feeder1-1.proxad.net!cleanfeed1-b.proxad.net!nnrp1-2.free.fr!not-for-mail Newsgroups: fr.comp.lang.java From: David Larochette Subject: Re: =?UTF-8?Q?D=C3=A9sactiver?= Ctrl+C, Ctrl+X et Ctrl+V References: <5ab71d60$0$7588$426a34cc@news.free.fr> <5ab87d44$0$31637$426a74cc@news.free.fr> User-Agent: slrn/1.0.3 (Linux) Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Message-ID: Date: 26 Mar 2018 21:22:29 GMT Lines: 127 Organization: Guest of ProXad - France NNTP-Posting-Date: 26 Mar 2018 23:22:29 CEST NNTP-Posting-Host: 89.93.29.118 X-Trace: 1522099349 news-3.free.fr 9280 89.93.29.118:37176 X-Complaints-To: abuse@proxad.net Xref: csiph.com fr.comp.lang.java:1685 Le 26-03-2018, jp a écrit : > Le Sun, 25 Mar 2018 22:28:46 +0200, Olivier Miakinen a écrit : > >> Bonjour, >> >> Le 25/03/2018 05:54, jp a écrit : >>> > >> Je ne suis sûr de rien, mais n'y aurait-il pas moyen de capturer les >> saisies au clavier et de filtrer les évènements pour ne pas les >> transmettre aux éléments suivants ? Note que si cette méthode fonctionne >> il te faudra aussi filtrer Ctrl+Inser et Shift+Inser pour interdire tout >> copier coller. > > Oui mais comment? > >> Mais j'ai une petite question annexe : pour quelle raison interdire >> cette fonctionnalité ? Ne pas l'avoir est *très* désagréable pour >> l'utilisateur. > > Ce ne serait pas dans tout le logiciel. Seulement au niveau de ma JList. > > J'ai trouvé ça sur le net: > > import java.awt.EventQueue; > import java.awt.event.ActionEvent; > import java.awt.event.ActionListener; > import java.awt.event.KeyEvent; > > import javax.swing.JComponent; > import javax.swing.JEditorPane; > import javax.swing.JFrame; > import javax.swing.JScrollPane; > import javax.swing.KeyStroke; > import javax.swing.ScrollPaneConstants; > > //Intercepting Ctrl+v demo > > public class TestEditorPane { > private JEditorPane editorPane; > > public static class CombinedAction implements ActionListener { > private final ActionListener action1; > private final ActionListener action2; > > public CombinedAction(ActionListener action1, ActionListener > action2) { > super(); > this.action1 = action1; > this.action2 = action2; > } > > @Override > public void actionPerformed(ActionEvent e) { > if (action1 != null) { > action1.actionPerformed(e); > } > if (action2 != null) { > action2.actionPerformed(e); > } > } > > } > > public TestEditorPane() { > } > > private void initUI() { > JFrame frame = new JFrame(); > frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); > // JTEXTBOX > editorPane = new JEditorPane(); > KeyStroke ctrlV = KeyStroke.getKeyStroke(KeyEvent.VK_V, > KeyEvent.CTRL_DOWN_MASK); // Il y a aussi VK_COPY, VK_CUT et VK_PASTE pour les claviers // qui possèdent physiquement ces touches. > final ActionListener ctrlVAction = > editorPane.getActionForKeyStroke(ctrlV); > editorPane.registerKeyboardAction(new CombinedAction(ctrlVAction, > new ActionListener() { > > @Override > public void actionPerformed(ActionEvent e) { > System.out.println("This is my action on CTRL+V"); > //Effectivement ça permet une action, mais le Ctrl-V à e.consume(); // Et l'objet qui a émis l'évènement // l'ignorera > } > }), ctrlV, JComponent.WHEN_FOCUSED); > // JSCROLLPANE > JScrollPane scroll1 = new JScrollPane(editorPane); > scroll1.setHorizontalScrollBarPolicy > (ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); > scroll1.setVerticalScrollBarPolicy > (ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); > frame.add(scroll1); > frame.setSize(400, 400); > frame.setVisible(true); > } > > public static void main(String[] args) { > EventQueue.invokeLater(new Runnable() { > @Override > public void run() { > try { > TestEditorPane test = new TestEditorPane(); > test.initUI(); > } catch (Exception e) { > e.printStackTrace(); > } > } > }); > } > > } > >> P.-S. : à moins que tu n'utilises vraiment l'adresse bloiiing.invalid >> chez yahoo.com, le .invalid est au mauvais endroit : il faudrait prendre >> plutôt bloiiing@yahoo.com.invalid ou bloiiing@yahoo.invalid si cette >> adresse n'est pas valide. > > Ok. Rectifié. >